Neues Frontend: FhemNative Updates

Begonnen von Syrex-o, 16 Juli 2019, 14:50:24

Vorheriges Thema - Nächstes Thema

ch.eick

Als erstes Device wollte ich einen shelly2.5 ansteuern:

Device Name: shelly01
Reading Name: relay_0
Get On: on
Get Off: off
Set on: set shelly01 on 0
Set off: set shelly01 off 0

Wäre das so richtig?


Internals:
   CHANGED   
   DEF        192.168.178.50
   DURATION   0
   FUUID      5d344c4e-f33f-81e9-2f16-85e5f78b2c9a8ac8
   INTERVAL   60
   NAME       shelly01
   NR         308
   STATE     
<TABLE>

<TR>
  <TD VALIGN="TOP" ALIGN="RIGHT" WIDTH="100">
    Status: OK<br>
  </TD>

  <TD VALIGN="TOP" ALIGN="RIGHT" WIDTH="70">
    Relais 0: off 0 Watt<br>
    Relais 1: off 0 Watt<br>
  </TD>
</TR>

</TABLE>

   TCPIP      192.168.178.50
   TYPE       Shelly
   READINGS:
     2019-07-21 13:39:22   cloud           disabled
     2019-07-21 13:54:44   config          1= [channel 0]
     2019-07-21 13:48:24   energy_0        0
     2019-07-21 13:48:24   energy_1        0
     2019-08-28 13:54:00   firmware        v1.5.3
     2019-09-18 16:39:47   network         <html>connected to <a href="http://192.168.178.50">192.168.178.50</a></html>
     2019-09-15 12:03:47   overpower_0     0
     2019-08-02 10:38:57   overpower_1     0
     2019-07-21 13:48:24   power_0         0
     2019-07-21 13:48:24   power_1         0
     2019-09-15 12:03:47   relay_0         off
     2019-08-02 10:38:57   relay_1         off
     2019-09-18 16:40:36   state           OK
Attributes:
   alias      LWP_Signale
   group      PV Eigenverbrauch-Steuerung
   icon       taster_ch_1
   mode       relay
   model      shelly2.5
   room       Heizung->System,Strom->Photovoltaik
   sortby     02
   stateFormat {sprintf("
<TABLE>

<TR>
  <TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"100\">
    Status: %s<br>
  </TD>

  <TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"70\">
    Relais 0: %s %s Watt<br>
    Relais 1: %s %s Watt<br>
  </TD>
</TR>

</TABLE>
" ,
ReadingsVal($name,"state","none") ,
ReadingsVal($name,"relay_0",0),ReadingsVal($name,"power_0",0),
ReadingsVal($name,"relay_1",0),ReadingsVal($name,"power_1",0)
)}
   webCmd
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Syrex-o

So, also als erstes:
Welche Websocket benutzt du.
Variante 1 braucht kein longpoll aber zusätzliche Module.
Variante 2 mit longpoll und keinen Bibliotheken.

Wenn in FhemNative ein Gerät erstellt wird, zeigt die letzte Seite den Konfigurationstest.
Beides auf grün heißt device gefunden und Reading auch. Ist das bei dir so ?

Zu deinem Shelly:
Das device ist natürlich shelly01
Das Reading ist auch richtig.
Beim Senden von Befehlen wird das Gerät nicht benötigt. Ist ja das gleiche.
Da du kein setReading brauchst, ist on und Off also nur on und Off.

Hoffe das hilft.

Grüße

ch.eick

#122
Hallo.

Ich habe genau diese Anleitung befolgt:

External Websocket installation

    sudo cpan App::cpanminus
    sudo cpanm Protocol::WebSocket
    sudo cpanm JSON
    copy content from websocket folder to opt/fhem/FHEM
    define wsPort websocket 8080 global
    define wsPort_json websocket_json

Danach ein shutdown restart ohne weitere Fehlermeldungen im Fhem Log.

Dann wurde die Win App gestartet und die IP-Adresse eingestellt.

Mit "Räume generieren" erschienen anschließend die Räume in der App.
Den Edit Modus kann ich nun auch aktivieren.

Dann habe ich den Button eingefügt, der nach wie vor mit der Fehlermeldung in einem Raum abgebildet wird.
Es laufen kurz einige blaue Punkte in dem Button Rahmen bevor die Meldung kommt.
Im Fhem Log erscheinen in diesem Moment keine Meldungen.

Zitat
Wenn in FhemNative ein Gerät erstellt wird, zeigt die letzte Seite den Konfigurationstest.
Beides auf grün heißt device gefunden und Reading auch. Ist das bei dir so ?
Ich erinnere mich, dass ich zwei grüne Balken zum schluss der Einrichtung gesehen haben.


Bei dem Shelly ist die Besonderheit, dass nach dem devicenamen ein "on" kommen muss, gefolgt von der relay Nummer.
Die Shelly2.5 haben zwei Kanäle 0/1

set shelly01 on 0


Im Anhang sind Bilder des Button
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Syrex-o

Hey,

Die Konfiguration sieht ganz gut aus. Im edit Mode kannst du übrigens doppelt auf alles klicken und alles bearbeiten.

Wenn deine IP und das Gerät stimmen, dann sollte beim Start eine connected Nachricht kommen. Ist das so ?

Der on Befehl sollte jedoch nicht das device enthalten.

Ich schaue mir den Button nachher Mal an. Eventuell ein Bug.

Beste Grüße

ch.eick

Beim Set on habe ich jetzt das "set shelly01" raus genommen.
Es steht nur noch "on 0" im Feld. Die 0 gibt das Relay an, dass geschaltet werden soll.

Das hat jedoch nichts an der Fehlermeldung geändert, die auf den Bildern zu sehen ist.

Gesendet von meinem SM-G930F mit Tapatalk

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

mkraus81

wie sieht denn deine IP-Einstellung in der App aus?
Zeig doch mal...

Bei Websocket muss der Port auf 8080 stehen
zeig mal mal ein Screenshot

mich hatte am Anfang Schritt 4 verwirrt "copy content from websocket folder to opt/fhem/FHEM"  hatte ein wenig gebraucht bis ich verstanden hatte das es um den  Inhalt des Ordners "https://github.com/Syrex-o/FhemNative/tree/master/00_Websocket" ging


ch.eick

Moin.
Die Ip stimmt und der Port ist 8080.
Das Protokoll steht auf websocket.

Die Räume wurden mit dieser Einstellung ja auch bereits übernommen.

Momentan komme ich da noch nicht weiter.

Ansonsten sieht das ganze Interface toll aus und ist genau das was ich noch gesucht hatte. Auch die unterstützten Platformen sind vielfältig.
Eventuell wäre Linux z.B. als .jar noch  toll, aber das ist so erst mal zu verschmerzen.

Danke für die tolle Arbeit.

Jetzt muss für meinen Fall nur der connect des Buttons noch klappen.

Gruß Christian 

Gesendet von meinem SM-G930F mit Tapatalk

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

mkraus81

hast es mal mit was anderem als Shelly versucht?

ch.eick

Zitat von: mkraus81 am 20 September 2019, 08:34:11
hast es mal mit was anderem als Shelly versucht?

Bisher noch nicht, jedoch wurde beim Einrichtungstest zwei mal grün angezeigt. Ich hatte bei einem Fehlerhaften "Set" eine Meldung im Log erwartet, jedoch denke ich kommt es momentan noch nicht so weit.
Syrex-o wollte sich den Button nochmal genauer ansehen, ob es da eventuell schon ein Problem gibt.
Sobald ich Zeit habe werde ich nochmal etwas anderes testen. Der Button erschien mir jedoch für den Anfang das simpelste.

Viele Grüße
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

mkraus81

also bei mir funktioniert "Button" deshalb die Frage
versuch mal ein anderes Gerät... einfaches Gerät was man mit set ON und OFF schalten... dann kannst sehen ob es überhaupt geht oder es z.B. an shelly liegt

Syrex-o

Zitat von: ch.eick am 20 September 2019, 11:29:11
Bisher noch nicht, jedoch wurde beim Einrichtungstest zwei mal grün angezeigt. Ich hatte bei einem Fehlerhaften "Set" eine Meldung im Log erwartet, jedoch denke ich kommt es momentan noch nicht so weit.
Syrex-o wollte sich den Button nochmal genauer ansehen, ob es da eventuell schon ein Problem gibt.
Sobald ich Zeit habe werde ich nochmal etwas anderes testen. Der Button erschien mir jedoch für den Anfang das simpelste.

Viele Grüße
     Christian

Also der Button funktioniert.
Er hat eine spezielle Logik für 2 Szenarien:
1. Es ist nur eine Verbindung zu FHEM aktiv --> senden von Befehlen über sendCommand
2. Fhem Gerät und Reading gefunden --> Befehle an das Device können gesendet werden.

Deine Fehlermeldung zeigt aber, dass keine aktive Verbindung zu FHEM existiert.

Bitte überprüfe das zuerst. Exe neu starten. Die Verbindung sollte dann sofort hergestellt werden (signalisiert über "Connected to Fhem" und "Fetched all devices")

Grüße

Syrex-o

Update: FhemNative 2.0.1

Hey zusammen,

FhemNative 2.0.1 ist für alle Geräte verfügbar.
Das Update sollte per Reminder in der App erscheinen.

Folgendes hat sich getan:

  • Settings Import ist behoben
  • Ein paar neue Logiken für default Einstellungen
  • Responsive Resize ist jetzt defaultmäßig auf ON (bitte daran denken, dass ein "Cross-Device" Austausch der Einstellungen nur dannperfekt funktioniert, wenn responsive resize an ist)

Aktuell arbeite ich an dem Wunsch für "Auto-Device-Import"

Ich freue mich auf euer Feedback.

Beste Grüße

ch.eick

#132
Zitat von: Syrex-o am 20 September 2019, 12:30:07
Deine Fehlermeldung zeigt aber, dass keine aktive Verbindung zu FHEM existiert.

Bitte überprüfe das zuerst. Exe neu starten. Die Verbindung sollte dann sofort hergestellt werden (signalisiert über "Connected to Fhem" und "Fetched all devices")

Hallo Syrex-o

ich habe nun einen Test zum Start der WinApp gemacht.

1) Das device wsPort hat verbose 5
2) die WinApp FhemNative wird gestartet
3) Links unten im Fenster wird Verbindung zu Fhem hergestellt angezeigt
3) Im Fhem Log sehe ich eine Vielzahl Meldungen


2019.09.23 12:18:46 4: Connection accepted from wsPort_192.168.178.201_58993
2019.09.23 12:18:46 5: GET / HTTP/1.1
Host: 192.168.178.12:8080
Connection: Upgrade
Pragma: no-cache
Cache-Control: no-cache
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) FhemNative/2.0.0 Chrome/76.0.3809.139 Electron/6.0.7 Saf
2019.09.23 12:18:46 5: ari/537.36
Upgrade: websocket
Origin: file://
Sec-WebSocket-Version: 13
Accept-Encoding: gzip, deflate
Accept-Language: de
Sec-WebSocket-Key: 9qZ65Y4jhO2hETEaUoZUNQ==
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
Sec-WebSocke
2019.09.23 12:18:46 5: t-Protocol: json


2019.09.23 12:18:46 5: HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Accept: BSAk97EIGX5RSZUkNblFB64sdcs=


2019.09.23 12:18:46 5: websocket subscribeTextMessage CODE(0x1160a30)
2019.09.23 12:18:46 4: websocket: protocol chosen 'json'
2019.09.23 12:18:46 5: {
  'type' => 'ping'
}

2019.09.23 12:18:46 5: ▒▒▒▒B ▒▒6Yö`▒▒-M޲,D▒▒`PҪ.Oҷ`▒▒!O޾#N▒▒xߺ1T▒▒`A▒`ݦ.Lή
2019.09.23 12:18:46 5: websocket text {"type":"command","payload":{"command":"list","arg":null}}
2019.09.23 12:18:46 5: websocket jsonmessage: {
  'payload' => {
                 'arg' => undef,
                 'command' => 'list'
               },
  'type' => 'command'
}


Nun kommen riesige Mengen von json Meldungen

Ein httpmod device mit Verbindung zur vallox_cloud (Meine Kontrollierte Wohnraum Lüftung) bricht dann zwischendurch, wegen zu hoher Datenmenge ab.

2019.09.23 12:18:48 1: ERROR sendMessage [Payload is too big. Send shorter messages or increase max_payload_size at /usr/local/share/perl/5.24.1/Protocol/WebSocket/Frame.pm line 253.
]


Dann folgen wieder weitere json Meldungen, die fehlerfrei zu sein scheinen

Und zum Schluss wird die Verbindung geschlossen.

2019.09.23 12:18:56 5: {
  'type' => 'close'
}



Nach dem Mittag kommt hier dann noch mehr :-)
Okay, es kommt nix mehr, aber ich mache dann mal den client update.

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Syrex-o

Hi Christian,

Jetzt macht alles mehr Sinn. Scheinbar hast du viele Fhem-Geräte?
Dein Log verrät dir schon die Lösung:
Zitat2019.09.23 12:18:48 1: ERROR sendMessage [Payload is too big. Send shorter messages or increase max_payload_size at /usr/local/share/perl/5.24.1/Protocol/WebSocket/Frame.pm line 253.
]

Erhöhe einfach die max_payload_size

Beste Grüße

ch.eick

#134
Hallo nochmal,

ich habe nun die Puffergröße in mehreren Schritten erhöht.
Zuerst müssen die Schreibrechte für root ergänzt werden:

pi@raspberrypi:~ $ ls -l /usr/local/share/perl/5.24.1/Protocol/WebSocket/Frame.pm
-r--r--r-- 1 root staff 11100 Sep 23 15:31 /usr/local/share/perl/5.24.1/Protocol/WebSocket/Frame.pm
pi@raspberrypi:~ $ sudo chmod u+w /usr/local/share/perl/5.24.1/Protocol/WebSocket/Frame.pm
pi@raspberrypi:~ $ ls -l /usr/local/share/perl/5.24.1/Protocol/WebSocket/Frame.pm
-rw-r--r-- 1 root staff 11100 Sep 23 15:31 /usr/local/share/perl/5.24.1/Protocol/WebSocket/Frame.pm



pi@raspberrypi:~ $ sudo systemctl stop fhem
pi@raspberrypi:~ $ sudo vi  /usr/local/share/perl/5.24.1/Protocol/WebSocket/Frame.pm
...
# our $MAX_PAYLOAD_SIZE = 65536;
our $MAX_PAYLOAD_SIZE = 196608;
...


Dieser hohe Pufferwert ist bei meinen folgenden Devices notwendig:

1) HTTPMOD zur Vallox Cloud mit einer sehr großen Anzahl von readings
2) Ein TV Dummy device, dass das aktuelle und Zukünftige TV Programm (EPG) aufnimmt.
    Hier sind meine wichtigsten Sender beinhaltet und die Sendungsbeschreibungen aus dem EPG.


pi@raspberrypi:~ $ sudo systemctl start fhem
pi@raspberrypi:~ $ sudo systemctl status fhem
● fhem.service - FHEM Home Automation
   Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-09-23 15:32:07 CEST; 23min ago
  Process: 5599 ExecStop=/usr/bin/pkill -U fhem perl (code=exited, status=0/SUCCESS)
  Process: 5632 ExecStart=/usr/bin/perl fhem.pl fhem.cfg (code=exited, status=0/SUCCESS)
Main PID: 5633 (perl)
   CGroup: /system.slice/fhem.service
           ├─5633 /usr/bin/perl fhem.pl fhem.cfg
           └─5724 /usr/bin/perl ./FHEM/00_SONOS.pm 4711 0 0 startedbyfhem

Sep 23 15:32:04 raspberrypi systemd[1]: Starting FHEM Home Automation...
Sep 23 15:32:07 raspberrypi systemd[1]: Started FHEM Home Automation.


Nach dieser Änderung trat die folgende Meldung dann nicht mehr auf

2019.09.23 12:18:48 1: ERROR sendMessage [Payload is too big. Send shorter messages or increase max_payload_size at /usr/local/share/perl/5.24.1/Protocol/WebSocket/Frame.pm line 253.
]


Beim Start von FhemNative erscheint nun nach dem initialen Laden aller Devices die Meldungen


Verbindung zum Fhem aufgebaut...
   Jetzt rauschen die Meldungen der Devices ins Logfile
Verbindung zum Fhem getrennt...

2019.09.23 15:58:16 5: {
  'type' => 'close'
}


Alle Geräte abgeholt (in grün)

Edit: Und hier hat wohl der timeout von 5 Sekunden zugeschlagen, denn es sollten noch weitere Meldungen im Log zu sehen sein!

Was ich nicht sehen kann ist das ping/pong , was ich zuvor bereits schon mal gesehen hatte.

Ich habe im FhemNative nun mal unter "Einstellungen>Log-File schreiben" aktiviert, konnte jedoch den Ablageort noch nicht finden.

Viele Grüße
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick