+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Websocket

  1. #1
    Registriert seit
    Dec 2013
    Beiträge
    52

    Standard Websocket

    Hallo,

    Hat jemand eine Ahnung wie das mit dem neuen Websocket Rückkanal funktioniert?

    Gibt es ein kleines Beispiel dafür?

  2. #2
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    22,191

    Was genau möchtest du machen?

    paresy

  3. #3
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    22,191

    JavaScript für "volle" API:
    Code:
    //Normal IP-Symcon 5.1/5.2
    var connection = new WebSocket('ws://127.0.0.1:3777/api/', [btoa("email:fernzugriffpw").replace(/=/g, '')]);
    
    //Normal IP-Symcon 5.3+
    var connection = new WebSocket('ws://127.0.0.1:3777/api/', [encodeURIComponent(btoa("email:fernzugriffpw"))]);
     
    //SSL IP-Symcon 5.1/5.2
    var connection = new WebSocket('wss://127.0.0.1:3777/api/', [btoa("email:fernzugriffpw").replace(/=/g, '')]);
    
    //SSL IP-Symcon 5.3+
    var connection = new WebSocket('wss://127.0.0.1:3777/api/', [encodeURIComponent(btoa("email:fernzugriffpw"))]);
    JavaScript für "WebFront" API:
    Code:
    //Normal | IP-Symcon 5.1
    var connection = new WebSocket('ws://127.0.0.1:3777/api/wfc/12345', [btoa("webfront:webfrontpw").replace(/=/g, '')]);
    
    //Normal | IP-Symcon 5.2
    var connection = new WebSocket('ws://127.0.0.1:3777/wfc/12345/api/', [btoa("webfront:webfrontpw").replace(/=/g, ''));
    
    //Normal | IP-Symcon 5.3+
    var connection = new WebSocket('ws://127.0.0.1:3777/wfc/12345/api/', [encodeURIComponent(btoa("webfront:webfrontpw")));
     
    //SSL | IP-Symcon 5.1
    var connection = new WebSocket('wss://127.0.0.1:3777/api/wfc/12345', [btoa("webfront:webfrontpw").replace(/=/g, '')]);
    
    //SSL | IP-Symcon 5.2
    var connection = new WebSocket('wss://127.0.0.1:3777/wfc/12345/api/', [btoa("webfront:webfrontpw").replace(/=/g, '')]);
    
    //SSL | IP-Symcon 5.3+
    var connection = new WebSocket('wss://127.0.0.1:3777/wfc/12345/api/', [encodeURIComponent(btoa("webfront:webfrontpw"))]);
    Beim WebFront ist der Username (also vor dem Doppelpunkt) wirklich fest "webfront" und muss nicht geändert werden.

    paresy
    Geändert von paresy (13.10.19 um 10:40 Uhr)

  4. #4
    Registriert seit
    May 2019
    Beiträge
    11

    Hallo zusammen,

    ich bin nach einigen Irrungen über verschiedene Systeme nach Jahren nun doch (endlich!) bei IP Symcon gelandet.
    Zuerst einmal ein dickes Lob an die Macher! Fühle mich (nicht nur wegen PHP) nach relativ kurzer Zeit heimisch, die Struktur und Umsetzung ist ganz nach meinem Geschmack :-)

    Da Websockets ja von Haus aus integriert sind, habe ich mir mal den Datenverkehr genauer angeschaut (ich möchte eine eigene Visualisierung auf Basis von Vue.js umsetzen) und bin etwas verwirrt. Habe schon hier im Forum gesucht, bin aber noch nicht fündig geworden (oder habe falsch gesucht).

    Deshalb habe ich ein paar Fragen:

    1. Wenn ich das Webfront öffne, sehe ich mit den entsprechenden DevTools zwar die Socketverbindung - aber nur eingehende Nachrichten, keine ausgehenden. Werden hier meine Aktionen nicht per Websocket an IP Symcon übertragen?

    2. Die Datenstruktur ist für mich noch etwas verwirrend. Für einen "normalen" Homematic Lichtschalter bekomme ich in data z. B.
    Code:
    0: false
    1: false
    2: false
    3: 1557697007
    4: 1557697007
    5: 1557697007
    zurück. Wofür stehen die ganzen Werte? Das Aussehen unterscheidet sich natürlich auch bei anderen SenderIDs. Wie muss eine Message aufgebaut sein, wenn ich sie an IP Symcon verschicke?

    Vielen Dank schon mal!

  5. #5
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    22,191

    1. Nein, diese laufen weiterhin über die normale JSON-RPC API gegen /api/
    2. Der Nachrichtenaufbau für VM_UPDATE ist wie folgt

    Wert
    Gab es eine Änderung
    Vorheriger Wert
    Zeitstempel der Änderung
    Zeitstempel der letzten Aktualisierung (seit 5.1)
    Zeitstempel der letzten Änderung (seit 5.1)

    paresy

  6. #6
    Registriert seit
    May 2019
    Beiträge
    11

    Super, danke!

  7. #7
    Registriert seit
    Jan 2012
    Beiträge
    580

    Zitat Zitat von paresy Beitrag anzeigen
    JavaScript für "volle" API:
    siehe oben.

    paresy
    Ich versuche gerade eine Websocket-Verbindung aufzubauen und stoße dabei auf folgende Probleme:
    1. Wenn ich auf die volle API von Linux Firefox zugreife, dann funktioniert alles wunderbar.
      Wenn ich auf die volle API von Linux Chromium oder IOS Safari zugreife, klappt es nicht.
    2. Wenn ich auf eine Webfront-API zugreifen will, dann wird auch in Firefox das Password nicht akzeptiert.

    Was muss ich da anders machen?

    Viele Grüße
    Jürgen
    Geändert von paresy (13.10.19 um 10:50 Uhr)

  8. #8
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    22,191

    Funktioniert denn das WebFront korrekt? Ab der 5.2 haben sich die Endpoints geändert. Habe es oben mal angepasst.

    paresy
    Geändert von paresy (16.08.19 um 10:33 Uhr)

  9. #9
    Registriert seit
    Jan 2012
    Beiträge
    580

    Webfront funktioniert einwandfrei. Ist auch das aktuelle IOS.

  10. #10
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    22,191

    Schau ggf. mal mit den Entwickler Tools unter "Netzwerk" was du anders machst.

    paresy

Ähnliche Themen

  1. Websocket verbindung auf ClockTwo
    Von danimerz im Forum Skripte, PHP, SQL
    Antworten: 8
    Letzter Beitrag: 17.02.17, 13:01
  2. Websocket Verbindung
    Von SteffenR im Forum Skripte, PHP, SQL
    Antworten: 10
    Letzter Beitrag: 20.06.16, 20:35
  3. Websocket
    Von Haibofan im Forum Skripte, PHP, SQL
    Antworten: 20
    Letzter Beitrag: 05.10.15, 12:14