NEWS
[gelöst]Klarstein Klimaanlage einbinden
-
Das ist genial von dir!!!
thebermud@ewpebridge:~$ git clone https://github.com/stas-demydiuk/ewpe-smart-mqtt Cloning into 'ewpe-smart-mqtt'... remote: Enumerating objects: 7, done. remote: Counting objects: 100% (7/7), done. remote: Compressing objects: 100% (7/7), done. remote: Total 80 (delta 0), reused 2 (delta 0), pack-reused 73 Unpacking objects: 100% (80/80), 29.17 KiB | 995.00 KiB/s, done.
npm habe ich auch schon nachträglich installiert
Edit:
thebermud@ewpebridge:~$ node -v v10.19.0 thebermud@ewpebridge:~$ npm -v 6.14.4
-
@Dominik-F OK - ich habs jetzt soweit - aber das letzte bei dieser Software muss ggf. jemand anderes helfen - da kommt dann irgendein security fehler - und das müssen dann hier die node Fachleute beurteilen.
Also als erstes habe ich festgestellt - dass dieses npm anscheinend auch schon die node v 12 ebnötigt und habe die Anleitung hier aus dem Forum verwendet:
-
Brauchst Du curl:
sudo apt install curl -
dann das eingeben; curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
-
Dann node-js installieren
sudo apt-get install -y nodejs
- dann wechselst Du in das Verzeichnis ewpw-smart-mqtt das unter Deinem aktuellen Verzeichnis angelegt sein sollte.
-
-
Sehr gut, npm install hat nun funktioniert.
thebermud@ewpebridge:~/ewpe-smart-mqtt$ npm install added 101 packages from 76 contributors and audited 101 packages in 3.964s found 1 low severity vulnerability run `npm audit fix` to fix them, or `npm audit` for details
-
Ja diese Fehler habe ich auch - da kann ich aber nicht helfen - auch der fix bereinigt das nicht.
Allerdings habe ich das Ding einfach mal unten gestartet und es scheint sich mit dem MQTT trotzdem verbinden zu wollen. Das lässt evtl hoffen.
Dann erstell mal die Datei mit den Umgebungsvariablen und schau ob sich das DIng mit Deinem mosquitto verbindet
-
Was soll ich denn bei Username und Passwort angeben, einfach nichts?
export MQTT_SERVER=mqtt://192.168.178.56 export MQTT_PORT=1883 export MQTT_USERNAME export MQTT_PASSWORD export MQTT_BASE_TOPIC=ewpe-smart export NETWORK=192.168.178.54 export DEVICE_POLL_INTERVAL=5000 export LOG_LEVEL=info
Er scheint die Variablen aus der Datei irgendwie nicht anzunehmen
-
Versuche erst mal:
- die beiden Variablen ganz wegzulassen
wenn er das nicht mag
-
einen leeren String übergeben also MQTT_USERNAME =
-
Letztlich können wir auch den MQTT Server absichern - was sich sowieso empfiehlt - aber ich wollte erst mal schauen, ob das prinzipiell funktioniert.
-
@Dominik-F Hast Du die Datei in dieses Verzeichnis "/etc/profile.d " gestellt. Da das globale Variablen sind - musst die Maschine neu booten und dann mit "set | more" schauen ob er das gefressen hat.
-
Ich hab diesen Befehl benutzt :sudo nano /etc/profile.d/mqtt.sh
set | more gibt folgendes aus:thebermud@ewpebridge:~$ set | more BASH=/bin/bash BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:globasciiranges:histappend:interactive_comments:login_s hell:progcomp:promptvars:sourcepath BASH_ALIASES=() BASH_ARGC=([0]="0") BASH_ARGV=() BASH_CMDS=() BASH_COMPLETION_VERSINFO=([0]="2" [1]="10") BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="5" [1]="0" [2]="16" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") BASH_VERSION='5.0.16(1)-release' COLUMNS=150 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus DEVICE_POLL_INTERVAL=5000 DIRSTACK=() DISPLAY=localhost:10.0 EUID=1000 GROUPS=() HISTCONTROL=ignoreboth HISTFILE=/home/thebermud/.bash_history HISTFILESIZE=2000 HISTSIZE=1000 HOME=/home/thebermud HOSTNAME=ewpebridge HOSTTYPE=x86_64 IFS=$' \t\n' LANG=de_DE.UTF-8 LESSCLOSE='/usr/bin/lesspipe %s %s' LESSOPEN='| /usr/bin/lesspipe %s' LINES=43 LOGNAME=thebermud LOG_LEVEL=info LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34 ;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=0 1;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2= 01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:* .ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg= 01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01; 35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35: *.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv= 01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.
Edit: VM hab ich neu gestartet
-
Da hat was funktioniert:
> ewpe-smart-mqtt@1.0.4 start /home/thebermud/ewpe-smart-mqtt > node index.js 2020-07-07T23:00:18.628Z [info]: Trying to connect to MQTT server mqtt://192.168.178.56 ... 2020-07-07T23:00:18.671Z [info]: Successfully connected to MQTT server 2020-07-07T23:00:18.678Z [info]: Socket server is listening on 0.0.0.0:51476 2020-07-07T23:00:18.678Z [info]: Scanning network 192.168.178.54 for available devices... 2020-07-07T23:00:18.697Z [info]: New device found: 1ecb8db4 (f4911ecb8db4), binding... 2020-07-07T23:00:18.718Z [info]: New device bound: 1ecb8db4 (192.168.178.54:7000) 2020-07-07T23:00:18.719Z [info]: MQTT message received: ewpe-smart/f4911ecb8db4 {cid:f4911ecb8db4,bc:000000000000000000000000000000,brand:gree,catalog:gree,mac:f4911ecb8db4,mid:13000,model:gree,name:1ecb8db4,series:gree,vender:1,ver:V1.2.1,lock:0,address:192.168.178.54,port:7000,key:3Cd6Fg9Ij2Lm5Op8} 2020-07-07T23:00:23.739Z [info]: MQTT message received: ewpe-smart/f4911ecb8db4/status {Pow:0,Mod:1,TemUn:0,SetTem:20,TemRec:0,WdSpd:0,Air:0,Blo:0,Health:0,SwhSlp:0,Lig:1,SwingLfRig:0,SwUpDn:2,Quiet:0,Tur:0,SvSt:0} 2020-07-07T23:00:28.741Z [info]: MQTT message received: ewpe-smart/f4911ecb8db4/status {Pow:0,Mod:1,TemUn:0,SetTem:20,TemRec:0,WdSpd:0,Air:0,Blo:0,Health:0,SwhSlp:0,Lig:1,SwingLfRig:0,SwUpDn:2,Quiet:0,Tur:0,SvSt:0} 2020-07-07T23:00:33.745Z [info]: MQTT message received: ewpe-smart/f4911ecb8db4/status {Pow:0,Mod:1,TemUn:0,SetTem:20,TemRec:0,WdSpd:0,Air:0,Blo:0,Health:0,SwhSlp:0,Lig:1,SwingLfRig:0,SwUpDn:2,Quiet:0,Tur:0,SvSt:0}
-
@Dominik-F Wow Super - dann schau doch mal unter Deinem iobroker unter mqtt.0 - ob das was ist und mach einen Screenshot
-
@mickym
Also die Bridge ist zu erkennen und so wie es aussieht auch die Klimaanlage. Nur dachte/hoffte ich auf ein paar Datenpunkte -
@Dominik-F Das sind doch alles Datenpunkte - schau den Status an - das ist ein Objekt mach das doch mal im Dialog -also status auf.
Steht doch alles beschrieben:
Publish to ewpe-smart/devices/list to receive list of registered devices
Publish to ewpe-smart/{deviceId}/get to receive status of {deviceId}
Publish to ewpe-smart/{deviceId}/set to set status of {deviceId}, payload should be json object with key/values pairs to set, i.e:ewpe-smart/{deviceId}/set {"Pow": 1, "SetTem": 24} - so schaltest Du sie ein und setzt Wunschtemperatur auf 24°C
Mit NodeRed könnte ich Dir jetzt einfach helfen - aber wenn Du das mit blockly machen willst - dann musst halt hier jemand finden.
-
dort steht folgendes:
{"Pow":0,"Mod":1,"TemUn":0,"SetTem":20,"TemRec":0,"WdSpd":0,"Air":0,"Blo":0,"Health":0,"SwhSlp":0,"Lig":1,"SwingLfRig":0,"SwUpDn":2,"Quiet":0,"Tur":0,"SvSt":0}
Also müsste ich mir nun ein Skript schreiben damit ich aus Vis heraus das ganze steuern kann oder? Ist bei MQTT immer alles in einem Datenpunkt?
Ne ne, von Blocky habe ich gar keine Ahnung, ich habe bisher nur Javascript benutzt .
Das folgende hab ich auch gelesen:
Publish to ewpe-smart/devices/list to receive list of registered devices Publish to ewpe-smart/{deviceId}/get to receive status of {deviceId} Publish to ewpe-smart/{deviceId}/set to set status of {deviceId}, payload should be json object with key/values pairs to set, i.e: ewpe-smart/{deviceId}/set {"Pow": 1, "SetTem": 24} - so schaltest Du sie ein und setzt Wunschtemperatur auf 24°C
Mir war nur nicht ganz klar was das bedeutet bzw wie ich das umsetze
-
@Dominik-F
Nein in MQTT ist nicht alles in einem Datenpunkt - das hängt vom Hersteller oder vielleicht hier auch von der Bridge ab.Das ist ein normaler JSON String - den Du mit einem Mal einliest und siehst alle Parameter.
Du kannst jetzt mal folgendes machen, um das schon mal anzusteuern. Klick mal Deine Klima an - f49 .... uns erstelle darunter einen Datenpunkt "set" (Datenpunkt - Zeichenkette)
Sowie ich das nun verstanden habe - kannst Du dann jedes beliege Schlüsselpaar dort eintragen um die Klima zu steuern.
Also {"Pow": 0 oder 1} um ein und auszuschalten. "Quiet": 1 - ist wahrscheinlich Quiet Modus - Air - wird wohl Gebläse sein usw. da musst halt rumspielen - was absetzen und schauen was das Gerät macht
Insofern musst Du nicht alles auf einmal setzen - Wenn Du also aus Deiner VIS diesen Wert in "set" {"Pow": 0 oder 1} schreibst und das nächste Mal {"SetTem": 24} aus einem anderen Widget ist das völlig OK. Zum Analysieren musst halt nur den JSON String auseinanderfieseln.
Du kannst für die VIS unter userdata.0 auch eigene Datenpunkte erstellen und dann über JAVA-Script den JSON String zusammensetzen und dann in den set Punkt setzen.
Mach das dochmal schnell den set punkt setzen im iobroker - Manuell einen Befehl los schicken, ob die Klima das macht was sie soll - dann hast Du doch alles erreicht was Du wolltest.
-
Ich kann jetzt gerade leider nicht testen, da der Abluftschlaucht meiner Klima gerade nicht angeschlossen ist und meine Frau da gerade friedlich schläft und es wäre besser wenn sie friedlich bleibt
ich werde es morgen abend austesten und dir dann eine Rückmeldung geben. Ich werde es anfangs mit dem Datenpunkt wie von dir beschrieben probieren.
Ich danke dir schon mal vielmals für deine Hilfe, Zeit und Geduld. -
@Dominik-F Ok - ich drück die Daumen - aber mE warst Du erfolgreich. Wie gesagt einfach Datenpunkt "set" unter dem Ast f49.... erstellen und dann im Dialog aufmachen und dann so ein JSON String mit den geschweiften Klammern da rein schreiben.
-
Ich halte dich auf dem Laufenden. Ich bin schonmal froh das mit deiner Hilfe die Verbindung steht
-
@Dominik-F Gut - und wenn Du Javascript Programmierer bist - dann solltest Du mit JSON.stringify() und JSON.parse(obj) vertraut sein, um Java Objekte entsprechend verarbeiten zu können.
Im Übrigen könntest DU Dir wahrscheinlich einfach über den Parser die Datenpunkte der Klima selbst erstellen und beschreiben, so dass Du mit VIS einfach zugreifen kannst. Änderungen durch die VIS müssten dann eben wieder ein Script initiieren, dass Dir den JSON String in den set Datenpunkt schreibt. -
Also ich benutze zwar javascript aber ich bin ganz weit davon entfernt ein Programmierer zu sein^^ Ich bin da blutiger Anfänger und kann bisher nur sehr einfache Skripte schreiben. Ich nenne es mal gefährliches Halbwissen^^
Ich hab das heute mit dem Datenpunkt getestet. Es funktioniert
Ich musste aber nochmal npm start in der Bridge ausführen damit die Verbindung wieder hergestellt wird.
-
@Dominik-F Na wenn das mit dem Datenpunkt nun funktioniert - dann ist doch erst mal das Ziel erreicht - nämlich einer Steuerung Deiner Klima aus iobroker zu 100% erreicht.
Aus einer Visualisierung die entsprechen JSON Strings zu erstellen oder den Status zu analysieren - sind ja nun Dinge, die mit Deiner übrigen Strategie zusammen passen müssen. Wenn die Bridge ggf. nicht stabil läuft muss man das Ding halt ggf. über den iobroker entfernt steuern. Da gibts aber sicher fähigere Leute als mich, die Dir da helfen können.