UDP - Broadcast - Verständnisfrage

  • Ich habe im hier Forum (leider irgendwo, finde es nicht mehr) gelesen, dass alle Schellys, z.B. je nach Stromanschluss oder Batterie, UDP-Pakete an die Adresse 224.0.1.187:56xx senden, mal alle 15s, mal 1x täglich oder sofort bei einem Event (z.B. bei einem Tastendruck).

    1. Ist das so?
    2. Wenn ja, was „babbelt“ denn Shelly so ungefragt?
    3. Kann die Adresse geändert werden?

    Ich möchte mit einem Listener „lauschen“.

    Mit der Elektrik ist das doch ganz einfach. Alles, was man sich merken muss: Rot ist Schwarz und Plus ist Minus, dann klappt‘s immer:!: Und beim Programmieren hat man auch nur Nullen und Einsen, also wie kompliziert kann das schon sein:?:

  • 1) ja, das ist so

    2) er schickt seinen Status (/cit/s), Dokumentation https://shelly-api-docs.shelly.cloud/#shelly-family-overview -> bei jedem Device einzeln unter CoIoT

    3) nein, das ist eine generische Adresse, die in der CoAp RFC festgelegt wurde .. würde man die ändern, wäre es kein CoAp mehr ..


    Ich kann dir nachher mal einen Listener bauen, für welches Betriebssystem hättest du den denn gerne? Windows, Linux, MacOS und 32 oder 64bit? beim RaspBerry (Arm) müsste ich wissen, welcher Pi..

    7x Shelly1, 6x Shelly 1PM, 9x Shelly 2.5, 3x Shelly2, 1x Shelly EM, 2x ShellyDimmer, 2x ShellyDimmer2, 1x Shelly 3EM, 1x Shelly4Pro, 1x Shelly Button1, 4x Shelly Duo, 3x ShellyVintage, 1x Shelly Bulb, 1x ShellyPlug, 2x ShellyRGBW2, 1x Shelly PlugS. 1x Shelly Sense, 1x Shelly i3, 1x Shelly Gas, 1x Shelly H&T, 1x Shelly Flood, 1x ShellyDoor&Window2, 1x TempAddon,

  • Moin,


    der Listener "steckt" in einer SPS (SIEMENS S7-1500). Leider hört er nur auf UDP-Pakete im Broadcast mit Adressen wie 192.168.xxx.255 bei beliebigem Port.


    Mit einem Paket-Sender kann ich UDP-Pakete inklusive beliebiger Nutzdaten versenden und die kommen auch in der SPS ordentlich an.


    Kannst du mir die generische Adresse inklusive Port nochmals mitteilen?


    Die IP beginnend mit 224.... funktioniert sonst in jedem privaten Netzwerk? Ich habe zur Probe einen Shelly 1PM mit WireShark belauscht, der hat aber keinen Piep von sich gegeben!? :/


    Auf dem Schlauch ich stehe!

    Mit der Elektrik ist das doch ganz einfach. Alles, was man sich merken muss: Rot ist Schwarz und Plus ist Minus, dann klappt‘s immer:!: Und beim Programmieren hat man auch nur Nullen und Einsen, also wie kompliziert kann das schon sein:?:

  • 224.0.1.187 auf Port 5683
    Ob die SPS damit was anfangen kann ist fraglich, CoAp ist aber auch kein Broadcast im lokalen Netz sondern Multicast..

    Falls es dich im Detail interessiert und du Go Code lesen kannst:
    https://github.com/shelly-tools/coiot


    Ein Bespiel für den Listener liegt im example Ordner.

    Es gibt aber auch für andere Programmiersprachen entsprechende Libraries..

    Edit: wenn du die mitlesen willst geht es am einfachsten mit Linux von der Komandozeile:

    tcpdump udp port 5683 and host 192.168.222.148 -n -vv -X
    IP vom Shelly statt der 192.168... eintragen

    7x Shelly1, 6x Shelly 1PM, 9x Shelly 2.5, 3x Shelly2, 1x Shelly EM, 2x ShellyDimmer, 2x ShellyDimmer2, 1x Shelly 3EM, 1x Shelly4Pro, 1x Shelly Button1, 4x Shelly Duo, 3x ShellyVintage, 1x Shelly Bulb, 1x ShellyPlug, 2x ShellyRGBW2, 1x Shelly PlugS. 1x Shelly Sense, 1x Shelly i3, 1x Shelly Gas, 1x Shelly H&T, 1x Shelly Flood, 1x ShellyDoor&Window2, 1x TempAddon,

    Edited once, last by Seven of Nine ().

  • Die SPS kann auch Multicast. Habe ich so eingetragen.


    Wenn ich mit dem PacketSender UDP-Daten als Mitglied der Multicast-Gruppe sende, kommen die auch fein in der SPS an.


    WireShark hat auch das CoAP-Protokoll erkannt und zeigt mir die gesendeten Daten.


    Nur der kleine Shelly 1PM ist weiterhin mucksmäuschenstill. Und ja, er (m/w/d???) ist erreichbar und fonktioniert.

    Mit der Elektrik ist das doch ganz einfach. Alles, was man sich merken muss: Rot ist Schwarz und Plus ist Minus, dann klappt‘s immer:!: Und beim Programmieren hat man auch nur Nullen und Einsen, also wie kompliziert kann das schon sein:?:

  • Nur der kleine Shelly 1PM ist weiterhin mucksmäuschenstill. Und ja, er (m/w/d???) ist erreichbar und fonktioniert.

    ist der direkt im Wifi oder über andere Komponten mit der SPS verbunden? Wenn da z.B. ein Switch, DLAN-Adapter oder ähnliches dazwischen hängt könnte es sein, daß da der Muliticast-Traffic blockiert wird..
    Hab selbst so einen Billig-Switch von TP Link (unmanged) hier rumfliegen, der den Traffic blockiert..

    7x Shelly1, 6x Shelly 1PM, 9x Shelly 2.5, 3x Shelly2, 1x Shelly EM, 2x ShellyDimmer, 2x ShellyDimmer2, 1x Shelly 3EM, 1x Shelly4Pro, 1x Shelly Button1, 4x Shelly Duo, 3x ShellyVintage, 1x Shelly Bulb, 1x ShellyPlug, 2x ShellyRGBW2, 1x Shelly PlugS. 1x Shelly Sense, 1x Shelly i3, 1x Shelly Gas, 1x Shelly H&T, 1x Shelly Flood, 1x ShellyDoor&Window2, 1x TempAddon,

  • Komando zurück: Ich hatte 200Byte Payload in der SPS erlaubt, konnte ja nicht ahnen, dass der "kleine Shelly" mich mit 244Byte bombardiert! :)


    Shelly ist direkt im WLAN. Komponenten im WLAN sind Fritzbox 7490 und Repeater 2400, sonst NETGEAR WNDAP350 als Accesspoints bzw. S3300-28X-PoE+ als Switches, so Billigkram halt... ;)


    Was ich aber jetzt feststelle: Shelly funkt im 5s-Takt, das ist ok. Aber nicht bei einem Event. Obwohl: Ich habe nur im Webbrowser ein-/ausgeschaltet, braucht es da einen Schalter an SW als Event?

    Mit der Elektrik ist das doch ganz einfach. Alles, was man sich merken muss: Rot ist Schwarz und Plus ist Minus, dann klappt‘s immer:!: Und beim Programmieren hat man auch nur Nullen und Einsen, also wie kompliziert kann das schon sein:?:

  • Eigentlich funken die bei Events direkt, also z.b. Relay on/off, input Änderung (Schalter) ...


    ansonsten alle 15 Sekunden.


    Das kannst du aber in der REST-API prüfen / ändern

    shelly-ip/settings zum gucken

    shelly-ip/settings?coiot_update_period=20 um sie z.B. auf 20 zu ändern..


    Code
    "coiot": {
    "update_period": 15
    },

    wenn das bei dir verzögert ankommt könnten es "Latenzen" bei der Verarbeitung / beim Transport im Wifi/Lan sein.. bei mir klappt das eigentlich fast in Echtzeit.

    7x Shelly1, 6x Shelly 1PM, 9x Shelly 2.5, 3x Shelly2, 1x Shelly EM, 2x ShellyDimmer, 2x ShellyDimmer2, 1x Shelly 3EM, 1x Shelly4Pro, 1x Shelly Button1, 4x Shelly Duo, 3x ShellyVintage, 1x Shelly Bulb, 1x ShellyPlug, 2x ShellyRGBW2, 1x Shelly PlugS. 1x Shelly Sense, 1x Shelly i3, 1x Shelly Gas, 1x Shelly H&T, 1x Shelly Flood, 1x ShellyDoor&Window2, 1x TempAddon,

  • Eigentlich funken die bei Events direkt, also z.b. Relay on/off, input Änderung (Schalter) ...

    Nein, definitiv nicht, jedenfalls bei mir. Habe die Updatezeit auf 5 Minuten gesetzt und anschließend mit der APP und mit dem Browser per RestAPI den Shelly 1PM ein- und ausgeschalten - kein noch so kleinen UDP-Paketchen bei einem Event.


    Wenn sich Shelly meldet (vom Zeitinterwall her), dann bekomme ich als Payload das:


    {"G":[[0,9103,23],[0,1101,0],[0,2101,0],[0,2102,""],[0,2103,0],[0,4101,0.00],[0,4103,7784],[0,6102,0],[0,6109,0.00],[0,3104,38.04],[0,3105,100.47],[0,6101,0]]}


    In der Doku steht G = generisch, erster Wert im Tuple = Kanal, zweiter Wert = ID, dritter Wert = Wert usw.


    Ja aber was ist denn hier was?


    BTW: Danke für die Hilfe bis hierher!

    Mit der Elektrik ist das doch ganz einfach. Alles, was man sich merken muss: Rot ist Schwarz und Plus ist Minus, dann klappt‘s immer:!: Und beim Programmieren hat man auch nur Nullen und Einsen, also wie kompliziert kann das schon sein:?:

  • soll ich dir mal einen Listener compilieren? müsste nur wissen für welches OS.


    Ich hab das nämlich gerade nochmal getestet, das Event von eimem Shelly1 wird direkt nach Betätigen des Relais über die App ausgelöst.

    Eventuell kriegt deine SPF das einfach nicht mit oder ist mit der Anzahl der CoAp-Nachrichten überfordert.

    https://shelly-api-docs.shelly.cloud/#shelly1-1pm-coiot


    In der Doku sind oben jeweils Text-Dateien, da sind die Statusmeldungen (/cit/s) und auch die Beschreinungen (/cit/d) drin..

    im /cit/d gibt es im JSON zwei Bäumchen:

    BLK beschreibt das Gerät z.b. die Anzahl der relais

    SEN beschreibt die Felder, die über den Status mitgegeben werden.


    der erste Wert ist eigentlich immer 0, im Zweiten steht die Feld-Beschreibung, im Dritten der Wert

    1101 und 2101 sind z.B. die Werte für Output 0 und Output1 (also z.b. Relay0 und 1 bei einem Shelly 2.5.. der 3.te Wert dahinter ist entweder 0 für aus oder 1 für aus/an.


    1201 und 2201 wären die beiden Inputs (Schalter) usw.


    ein [0,1101,0] bedeutet also: Relay0 vom Shelly ist gerade aus.

    7x Shelly1, 6x Shelly 1PM, 9x Shelly 2.5, 3x Shelly2, 1x Shelly EM, 2x ShellyDimmer, 2x ShellyDimmer2, 1x Shelly 3EM, 1x Shelly4Pro, 1x Shelly Button1, 4x Shelly Duo, 3x ShellyVintage, 1x Shelly Bulb, 1x ShellyPlug, 2x ShellyRGBW2, 1x Shelly PlugS. 1x Shelly Sense, 1x Shelly i3, 1x Shelly Gas, 1x Shelly H&T, 1x Shelly Flood, 1x ShellyDoor&Window2, 1x TempAddon,

  • Hm, danke für das Angebot. Aber der Plan ist ja, die SPS zu benutzen, keinen Rechner. Die Nachrichten, die im eingestellten Intervall von Shelly gesendet werden, kommen ja auch verlustfrei in der SPS an. Die Zykluszeit in der SPS beträgt aktuell ca. 720ns, das sollte reichen, ausserdem ist ja zu Testzwecken nur 1 Shelly da.


    Im Moment habe ich folgenden Testaufbau (alle Teilnehmer in der gleichen IP-range):

    • SPS mit fester IP und einem Multicast-Listener 224.0.1.187:5683 im LAN
    • Shelly 1PM mit fester IP im WLAN
    • Notebook Windows 10 mit fester IP im WLAN
      • WireShark
      • PacketSender, Mitglied in der gleichen Multicastgruppe

    Da ich im WireShark die Zeit-gesteuerten CoAP-Pakete des Shelly sehe, sollte ich doch auch die Event-gesteuerten sehen, oder? Finde den Fehler!

    Mit der Elektrik ist das doch ganz einfach. Alles, was man sich merken muss: Rot ist Schwarz und Plus ist Minus, dann klappt‘s immer:!: Und beim Programmieren hat man auch nur Nullen und Einsen, also wie kompliziert kann das schon sein:?:

  • der 1PM hat aktuelle Fimware? in 1.8.0 gab es einen Bug mit Verzögerungen bei den CoAp-Paketen, ähnlich wie du ihn beschreibst..

    das wurde mit der aktuellen Version gefixt..

    Ich hab einen großen Teil meiner Shellys bereits auf 1.9RC2 laufen, eventuell testest du sie mal..


    http://ip-vom-shelly/ota?url=http://repo.shelly.cloud/firmware/rc/SHSW-PM.zip

    7x Shelly1, 6x Shelly 1PM, 9x Shelly 2.5, 3x Shelly2, 1x Shelly EM, 2x ShellyDimmer, 2x ShellyDimmer2, 1x Shelly 3EM, 1x Shelly4Pro, 1x Shelly Button1, 4x Shelly Duo, 3x ShellyVintage, 1x Shelly Bulb, 1x ShellyPlug, 2x ShellyRGBW2, 1x Shelly PlugS. 1x Shelly Sense, 1x Shelly i3, 1x Shelly Gas, 1x Shelly H&T, 1x Shelly Flood, 1x ShellyDoor&Window2, 1x TempAddon,

  • Ah, danke. Überprüfe ich noch heute Abend. Jetzt ist erstmal der Garten dran, leider gibt’s da (noch) keine Automatikfunktion...


    Edit: Es ist V1.8.3, ich mache dann das Update und teste nochmal.

    Mit der Elektrik ist das doch ganz einfach. Alles, was man sich merken muss: Rot ist Schwarz und Plus ist Minus, dann klappt‘s immer:!: Und beim Programmieren hat man auch nur Nullen und Einsen, also wie kompliziert kann das schon sein:?:

    Edited once, last by ASi-Master ().

  • So, Update ist gemacht und - geht!


    Shelly meldet sofort den Tastendruck (im Webbrowser) und wenig später nochmals, weil sich der Wert der Last ändert (1PM). Beim Ausschalten kommt eine Meldung.


    Das ist perfekt, denn damit kann ich die SPS zum io-broker machen!


    Kleine Anmerkung am Rande, der Response vom Update ist ein bisschen irreführend, weil alte Version = neue Version:

    Code
    {"status":"updating","has_update":false,"new_version":"20200827-070450/v1.8.3@4a8bc427","old_version":"20200827-070450/v1.8.3@4a8bc427"}

    Ein Blick in die Settings zeigt aber die neue Version 1.9..


    Seven of Nine : Vielen Dank für die Hilfe!

    Mit der Elektrik ist das doch ganz einfach. Alles, was man sich merken muss: Rot ist Schwarz und Plus ist Minus, dann klappt‘s immer:!: Und beim Programmieren hat man auch nur Nullen und Einsen, also wie kompliziert kann das schon sein:?:

  • Der Response beim Update ist deshalb irreführend, weil es ja eine noch "inoffizielle" Firmware-Version ist, die du da auf den Shelly gelfasht hast.. ;)


    Sobald die produktiv geht ist das alles wieder korrekt.


    Aber es freut mich schon sehr, wenn es insgesamt so funktioniert wie du dir das vorgestellt hast..:thumbup::thumbup::thumbup:


    PS: Wenn ich es selbst so erklären kann, dass jemand Anderes damit etwas anfangen kann gibt mir das die Bestätigung, dass ich es selbst richtig verstanden hab. Perfekt, genau so soll es sein :)

    7x Shelly1, 6x Shelly 1PM, 9x Shelly 2.5, 3x Shelly2, 1x Shelly EM, 2x ShellyDimmer, 2x ShellyDimmer2, 1x Shelly 3EM, 1x Shelly4Pro, 1x Shelly Button1, 4x Shelly Duo, 3x ShellyVintage, 1x Shelly Bulb, 1x ShellyPlug, 2x ShellyRGBW2, 1x Shelly PlugS. 1x Shelly Sense, 1x Shelly i3, 1x Shelly Gas, 1x Shelly H&T, 1x Shelly Flood, 1x ShellyDoor&Window2, 1x TempAddon,

  • Sorry dass ich nochmals frage: Gibt es keine ordentliche Referenz? Die "Doku" habe ich gelesen/gesichtet und man kann sich auch irgendwie "durchwurschteln", aber eine Dokumentation sieht anders aus, oder? :/

    Mit der Elektrik ist das doch ganz einfach. Alles, was man sich merken muss: Rot ist Schwarz und Plus ist Minus, dann klappt‘s immer:!: Und beim Programmieren hat man auch nur Nullen und Einsen, also wie kompliziert kann das schon sein:?:

  • doch es gibt eine, ebenfalls in der Shelly API Reference:

    https://shelly-api-docs.shelly.cloud/#coiot-protocol-version


    Da sind /citd/d und /cit/s sowie alle properties genau beschrieben..

    7x Shelly1, 6x Shelly 1PM, 9x Shelly 2.5, 3x Shelly2, 1x Shelly EM, 2x ShellyDimmer, 2x ShellyDimmer2, 1x Shelly 3EM, 1x Shelly4Pro, 1x Shelly Button1, 4x Shelly Duo, 3x ShellyVintage, 1x Shelly Bulb, 1x ShellyPlug, 2x ShellyRGBW2, 1x Shelly PlugS. 1x Shelly Sense, 1x Shelly i3, 1x Shelly Gas, 1x Shelly H&T, 1x Shelly Flood, 1x ShellyDoor&Window2, 1x TempAddon,