Kniwwelino – Volume Control for Volumio / Sonos

Wat mécht ee mat engem Kniwwelino deen en doheem trëllen huet? Richteg, eng Fernsteierung fir ee Volumio oder Sonos Medie Spiller.

An engem fréieren Artikel hunn ech schonn beschriwwen wéi ee kann ee Zigbee Taster vun Xiaomi benotzen fir een Volumio oder Sonos fernzesteieren.

Elo maache mir dat ganzt mat engem Kniwwelino.

Wat brauch een?

Volumio?

Volumio ass een Open-Source Medie Spiller, ideal fir aus ale Lautsprecher a Kombinatioun mat engem Raspberry Pi ee mächtege Medie Spiller ze bauen. Och do hunn ech schonn driwwer geschriwwen.

Arduino Code

Volume +

Knäppchen “A” drécken:

  • Kniwwelino schéckt de Message “VOLUP” un den MQTT Broker
  • LED Matrix weist een “+” un
  • LED Matrix schalt sech no 500ms rëm aus

Volume –

Knäppchen “B” drécken:

  • Kniwwelino schéckt de Message “VOLDOWN” un den MQTT Broker
  • LED Matrix weist een “+” un
  • LED Matrix schalt sech no 500ms rëm aus

Play/Pause

Knäppchen “A + B” zesumme drécken:

  • Kniwwelino schéckt de Message “PLAY-PAUSE” un den MQTT Broker
  • LED Matrix weist ee Symbol un
  • LED Matrix schalt sech no 500ms rëm aus

Optional – Previous Track:

Hei kann een sech nach een zousätzlechen Taster un de PIN “D5” uschléissen:

  • Kniwwelino schéckt de Message “PREV-TRACK” un den MQTT Broker
  • LED Matrix weist ee Feil no lenks un
  • LED Matrix schalt sech no 500ms rëm aus

Optional – Next Track:

Hei kann een sech nach een zousätzlechen Taster un de PIN “D6” uschléissen:

  • Kniwwelino schéckt de Message “NEXT-TRACK” un den MQTT Broker
  • LED Matrix weist ee Feil no riets un
  • LED Matrix schalt sech no 500ms rëm aus

Hei ass den Code fir dat ganzt:

 #include <Kniwwelino.h>
void setup() {
  //Initialize the Kniwwelino Board
  Kniwwelino.begin(true, true, false); // Wifi=true, Fastboot=true, MQTT Logging=false
  Kniwwelino.MQTTsetup("IP.vum.MQTT.Broker", 1883, "user", "password);
  Kniwwelino.MQTTconnect();
  Kniwwelino.MQTTsubscribe("volumio/kichen");
  Kniwwelino.PINenableButton(D5);
  Kniwwelino.PINenableButton(D6);
}
void loop() {
  if (Kniwwelino.BUTTONABclicked()) {
    Kniwwelino.MQTTpublish("volumio/kichen", String("PLAY-PAUSE"));
    Kniwwelino.MATRIXdrawIcon(String("B0010001010111110101000100"));
    Kniwwelino.logln(String("PLAY-PAUSE"));
    Kniwwelino.sleep(500);
    Kniwwelino.MATRIXclear();
  } else if (Kniwwelino.BUTTONAclicked()) {
    Kniwwelino.MQTTpublish("volumio/kichen", String("VOLUP"));
    Kniwwelino.MATRIXdrawIcon(String("B0010000100111110010000100"));
    Kniwwelino.logln(String("VOLUP"));
    Kniwwelino.sleep(500);
    Kniwwelino.MATRIXclear();
  } else if (Kniwwelino.BUTTONBclicked()) {
    Kniwwelino.MQTTpublish("volumio/kichen", String("VOLDOWN"));
    Kniwwelino.MATRIXdrawIcon(String("B0000000000111110000000000"));
    Kniwwelino.logln(String("VOLDOWN"));
    Kniwwelino.sleep(500);
    Kniwwelino.MATRIXclear();
  }
  if (Kniwwelino.PINbuttonClicked(D5)) {
    Kniwwelino.MQTTpublish("volumio/kichen", String("PREV-TRACK"));
    Kniwwelino.MATRIXdrawIcon(String("B0010001000111110100000100"));
    Kniwwelino.logln(String("PREV-TRACK"));
    Kniwwelino.sleep(500);
    Kniwwelino.MATRIXclear();
  } else if (Kniwwelino.PINbuttonClicked(D6)) {
    Kniwwelino.MQTTpublish("volumio/kichen", String("NEXT-TRACK"));
    Kniwwelino.MATRIXdrawIcon(String("B0010000010111110001000100"));
    Kniwwelino.logln(String("NEXT-TRACK"));
    Kniwwelino.sleep(500);
    Kniwwelino.MATRIXclear();
  }
  Kniwwelino.loop(); // do background stuff...
}

Kee Wifi am Code?

Richteg gesinn, am Code ass néierens eng Zeile ze fanne fir de Kniwwelino un ee Wifi ze verbannen.

Ech benotzen dofir léiwer déi agebaute Funktioun vun der Firmware:

Einfach déi 2 Knäppchen A a B wärend dem astieche vum USB Kabel (lies: uschalte vum Kniwwelino) gedréckt halen. De Kniwwelino start dann am Wifi AP Modus. Einfach mam Smartphone op deen Temporäre Wifi (SSID Kniwwelino_xyz.) verbannen an zack! lant een um Portal wou een ee Wifi auswiele ka fir sech domadder ze verbannen.

MQTT Topic

Opgepasst!

Am Code gëtt de MQTT Topic als volumio/kichen définéiert, mee de Kniwwelino setzt nach ee Prefix kniwwelino/ virdrun, sou dass den Topic um MQTT Broker schlussendlech kniwwelino/volumio/kichen ass.

Home Assistant

Zu gudder Lescht benotzen ech den Home Assistant fir op déi verschidden Evenementer resp MQTT Topics ze lauschteren an deementspriechend Aktiounen aus ze féieren.

Pro Aktioun een Automatisme, hei déi fir Volume Down:

 - id: '1570021574570'
  alias: Kniwwelino - Volumio Kichen Volume Down
  trigger:
  - payload: VOLDOWN
    platform: mqtt
    topic: kniwwelino/volumio/kichen
  condition: []
  action:
  - data:
      entity_id: media_player.volumio_kichen_local
    service: media_player.volume_down

Déi aner Automatismen hunn folgend Parameter déi sollen opgeruff ginn:

  • Volume Up – Payload: VOLUP – Service: media_player.volume_up
  • Play/Pause – Payload: PLAY-PAUSE – Service: media_player.media_play_pause
  • Previous Track – Payload: PREV-TRACK – Service: media_player.media_previous_track
  • Next Track – Payload: NEXT-TRACK – Service: media_player.media_next_track

An elo?

Dat war et schonn. Elo brauch ech just nach ee Gehais aus engem 3D Printer fir de Kniwwelino.

Vill Spaass beim Nobauen!

Permanent link to this article: https://www.hiscorebob.lu/2019/10/kniwwelino-volume-control-for-volumio-sonos/

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: