NEWS
Alexa ein befehl true oder false
-
@aphofis Na ich weiß nicht wieiviel Flows Du schon hast - sonst würde ich das Ding in jedem Fall ausmachen. Aber so wie es jetzt ist, kannst Du den Flow nehmen, sowie von Dir gepostet -aber Du musst halt das Ergebnis über eine iobroker-out Node noch in den Datenpunkt schicken, der das Ding dann ein oder ausschaltet.
Wenn Du den Haken jetzt raus machst, dann kann es sein, dass Deine bisherigen Flows nicht mehr funktionieren. Es ist eine Schande, dass man den Haken standardmäßig einschaltet.
In dem Flow wie oben dargestellt ist das ja Aquarium_Info.
-
@mickym
ist es so korrekt ?[ { "id": "9210c811.e5cf7", "type": "tab", "label": "bad_decke", "disabled": false, "info": "" }, { "id": "f71963ce.72d2", "type": "alexa-local", "z": "9210c811.e5cf7", "devicename": "badezimmer", "inputtrigger": false, "x": 530, "y": 240, "wires": [ [ "658584c8.db959c" ] ] }, { "id": "9295c9be.627c88", "type": "change", "z": "9210c811.e5cf7", "name": "Negation", "rules": [ { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "str", "to": "true", "tot": "bool" }, { "t": "change", "p": "payload", "pt": "msg", "from": "false", "fromt": "str", "to": "true", "tot": "str" }, { "t": "change", "p": "payload", "pt": "msg", "from": "true", "fromt": "bool", "to": "false", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 940, "y": 240, "wires": [ [ "ed7d17b7.c4d448" ] ] }, { "id": "658584c8.db959c", "type": "ioBroker get", "z": "9210c811.e5cf7", "name": "bad POWER1", "topic": "sonoff.0.bad_decke.POWER", "attrname": "payload", "payloadType": "value", "x": 740, "y": 240, "wires": [ [ "9295c9be.627c88" ] ] }, { "id": "ed7d17b7.c4d448", "type": "ioBroker out", "z": "9210c811.e5cf7", "name": "badezimmer", "topic": "Aqua_Control.0.System.badezimmer", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1140, "y": 240, "wires": [] } ]
-
@mickym
Ja ist aktiviert
nur ich blicke nicht mehr durch in welcher reihenfolge die elemente sein müssenWarum - dann scheinst Du den Flow nicht zu verstehen!!!
- Die Alexa Node - schickt eine Nachricht, wenn Du was sagst
- Im Prinzip interessiert Dich nicht, was Alexa sagt - nur dass sie was sagt - also Deinen Flow triggert.
- Du schaust in bad POWER1 für ein Status geschaltet ist (true oder false)
- Du schickst das Gegenteil an die badezimmer node.
Ja - der Flow sollte funktionieren.
-
bad POWER1 ist der Datenpunkt vom sonoff (Tasmota) gerät was die Deckenlampe schaltet und badezimmer ist ein true false datenpunkt der mit einem blockly dann die tatsächliche deckenlampe schaltet! da ich absolut nicht weiss wie man das nur in node red realisiert das direkt die deckenlampe mit node red geschaltet wird wenn man alexa sagt zb badezimmer dann wird halt die deckenlampe ein oder ausgeschaltet
-
@aphofis Wie gesagt es sollte funktionieren. Warum weißt Du nicht, wie man das in node Red realisiert? Du brauchst doch nur schauen, welchen Datenpunkt Dein blockly schaltet und gibst diesen in Deiner iobroker out Node an.
-
@mickym
mit blockly komme ich klar aber in node red überhaupt nicht!!! -
@aphofis Wenn das so ist- dann würde ich einfach die Ausgabe der Alexa Node in einen Datenpunkt schreiben - ohne irgendwas zu verändern - dann kannst Du alles mit blockly implementieren und brauchst Dir über NodeRed keine Gedanken mehr machen.
Damit ist in Deiner Badezimmer Node 1:1 was aus der Alexa Node rauskommt in der badezimmer Node - und kannst alles im Blockly machen.
Dann braucht ihr Euch um Node Red nicht mehr zu kümmern, sondern kannst alles im Blockly weiter bearbeiten. -
@mickym
ich habe sehr viele flows über die ich blockly steuerunen aktiviere deaktiviere oder infos abrufe.
Es wäre natürlich mega diese ausschließlich über node red zu steuern phen blockly
badezimmer decke ist ja auch nur zum testen normal rufe ich per alexa informationen zu meinem aquarium ab was ja direkt per iot pro adapter nicht mehr möglich ist. deswegen die alexa local flows damit ich das weiterhin nutzen kann. der Umweg über datenpunkte bei denen dann blockly triggert ist etwas umständlichMeinst du wenn ich dir eine simple blockly Steuerung schicke ob du die dann usetzen kannst in node red dann kann ich mir alle anderen selbst anpassen.
-
@aphofis Bin zwar nicht superfit im Blockly aber die Grundzüge verstehe ich. Aber warum willst Du Dich denn mit NodeRed beschäftigen, wenn Du damit eh auf Kriegsfuß stehst?????
Wie gesagt Du kannst mir gerne ein Blockly schicken und ich kann versuchen es in NodeRed umzusetzen, aber wenn Du Dich nicht mit diesem Produkt beschäftigen willst, warum willst Du Dir das antun.
Dann machs doch so, wenn Du nur Nodes in NodeRed findest - schreib diese 1:1 in einen Datenpunkt und bearbeite die dann mit blockly logisch weiter.
-
@mickym
Also ich habe einen Datenpunkt Aquarium Info dieser soll per alexa local direkt geschaltet werden
sprich wenn ich sage alexa aquarium info soll der datenpunkt ausgelöst werden womit dann die alexa ausgabe per alexa die infos zu den verschiedenen sensor werten ausgibt<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on" id="19!qw~cv$H6hV#-Y@nPu" x="-1385" y="-1010"> <field name="OID">Aqua_Control.0.System.Aquarium_Info</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="v[+.^:td*@A!`}?;wakK"> <value name="IF0"> <block type="logic_compare" id="z`g479@_CM!8=p)OtA12"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="IQhZZ$BW7dP|fAsFYiD#"> <field name="ATTR">val</field> <field name="OID">Aqua_Control.0.System.Aquarium_Info</field> </block> </value> <value name="B"> <block type="logic_boolean" id="9y8~Ekl+VO$-[y0hSFDI"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="l{DhYN}_th?*+FgapNAo"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="{_.tsQa7HwkxBPQMy8-]"> <mutation items="17"></mutation> <value name="ADD0"> <block type="text" id="M,9{x9+^IAn_gWrYi??P"> <field name="TEXT">Aquarium Werte,,</field> </block> </value> <value name="ADD1"> <block type="text" id="`iUI3`jPx!tg]SS_/7sk"> <field name="TEXT">Wasser,,</field> </block> </value> <value name="ADD2"> <block type="get_value" id="Q+c{_hkajiOaD1|![GiT"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.DS18B20-2_Temperature</field> </block> </value> <value name="ADD3"> <block type="text" id="}W1}R4sJrqKq4[mt*_KE"> <field name="TEXT">Grad Celsius,, Luft,,</field> </block> </value> <value name="ADD4"> <block type="get_value" id="Js4M3=jtCC1;:PkN6JN("> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.DHT11-02_Temperature</field> </block> </value> <value name="ADD5"> <block type="text" id="Acf=9wQq3Szo5M_on%em"> <field name="TEXT">Grad Celsius,, Luftfeuchtigkeit,,</field> </block> </value> <value name="ADD6"> <block type="get_value" id="=:1-V{KOKB=V@?:ZKzd+"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.DHT11-02_Humidity</field> </block> </value> <value name="ADD7"> <block type="text" id="B:FfIZ3T*O=,~oV~|ol-"> <field name="TEXT">Prozent,, Technik Werte,,</field> </block> </value> <value name="ADD8"> <block type="text" id="=QX,XOHk%pKfjcPmyhAL"> <field name="TEXT">Wasser,,</field> </block> </value> <value name="ADD9"> <block type="text" id="?*Qa,#!!rctHOHI0`LPg"> <field name="TEXT">,, Luft,,</field> </block> </value> <value name="ADD10"> <block type="get_value" id="-z,%g=cKHbMHzaOb/PfK"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.DHT11-05_Temperature</field> </block> </value> <value name="ADD11"> <block type="text" id="4PUc4Ickt!*k`ALT%F/Y"> <field name="TEXT">Grad Celsius,,</field> </block> </value> <value name="ADD12"> <block type="text" id="p8U$}Zng|(twcMMY4Tb6"> <field name="TEXT">Luftfeuchtigkeit,,</field> </block> </value> <value name="ADD13"> <block type="get_value" id="FZ58m6Y?9eL@%CT:k;(-"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.DHT11-05_Humidity</field> </block> </value> <value name="ADD14"> <block type="text" id="$y4{+c.:J:%ss]kLM!.q"> <field name="TEXT">Prozent,, Niveau,,</field> </block> </value> <value name="ADD15"> <block type="math_rndfixed" id=")8P5V0gXZB-*KROQ1laK"> <field name="n">1</field> <value name="x"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id="veSP=XKIlW4$?:8|Z+aH"> <field name="NUM">3.1234</field> </shadow> <block type="get_value" id="X{|7uA{)Z+L%k8m[%US}"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.SR04_Distance</field> </block> </value> </block> </value> <value name="ADD16"> <block type="text" id="gKB]nBFJ!+YDw^Wt}{%H"> <field name="TEXT">zentimeter,,</field> </block> </value> </block> </value> <next> <block type="update" id="x!,Sqox.=Adkz#ub+J];"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">Aqua_Control.0.System.Aquarium_Info</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1</field> <field name="UNIT">min</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="YYL;$Pwng+7U;V(s((QN"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="OrSBDXNC?t$3wyLI=E}c"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">Aqua_Control.0.VIS.Meldungen.Info</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id="/EIjGTdu|9s}|wGRvnMw"> <mutation items="17"></mutation> <value name="ADD0"> <block type="text" id="m[#-MsUIy@?XoWNt:Wnh"> <field name="TEXT">Aquarium Werte,,</field> </block> </value> <value name="ADD1"> <block type="text" id="N5pKv}Wk%X8X)Qi(;k`e"> <field name="TEXT">Wasser,,</field> </block> </value> <value name="ADD2"> <block type="get_value" id=")Cl{Z4oKW-0ct;U;2L*3"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.DS18B20_Temperature</field> </block> </value> <value name="ADD3"> <block type="text" id="ZWeJGefUee*N-FV`GO%F"> <field name="TEXT">Grad Celsius,, Luft,,</field> </block> </value> <value name="ADD4"> <block type="get_value" id="CnjQYLO(L2PPyN.S76)H"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.DHT11-02_Temperature</field> </block> </value> <value name="ADD5"> <block type="text" id="V#hgTPTZ;diLiEdMr1@r"> <field name="TEXT">Grad Celsius,, Luftfeuchtigkeit,,</field> </block> </value> <value name="ADD6"> <block type="get_value" id="yoDk(^P^5}j[VnkXKzOA"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.DHT11-02_Humidity</field> </block> </value> <value name="ADD7"> <block type="text" id="Y~sj,Qm8;#.]u76DNHIb"> <field name="TEXT">Prozent,, Technik Werte,,</field> </block> </value> <value name="ADD8"> <block type="text" id="UOnb1:[)umEjJ9]7Ze7="> <field name="TEXT">Wasser,,</field> </block> </value> <value name="ADD9"> <block type="text" id="-aVUC@,~a/lhb#wP![Hf"> <field name="TEXT">,, Luft,,</field> </block> </value> <value name="ADD10"> <block type="get_value" id="|G+*pC-jkG~l#ir))Ly)"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.DHT11-05_Temperature</field> </block> </value> <value name="ADD11"> <block type="text" id="hxHjG:-`K5B8eBmV1`E("> <field name="TEXT">Grad Celsius,,</field> </block> </value> <value name="ADD12"> <block type="text" id="b$$j4+(m8$qTAlM,.({."> <field name="TEXT">Luftfeuchtigkeit,,</field> </block> </value> <value name="ADD13"> <block type="get_value" id="C)}/-{!fE[mV~mxs137X"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.DHT11-05_Humidity</field> </block> </value> <value name="ADD14"> <block type="text" id="t8(?*r`~66Y]uSq/(|[N"> <field name="TEXT">Prozent,, Niveau,,</field> </block> </value> <value name="ADD15"> <block type="math_rndfixed" id="U8U$@AG%ZY;ZRfEJempy"> <field name="n">1</field> <value name="x"> <shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id="veSP=XKIlW4$?:8|Z+aH"> <field name="NUM">3.1234</field> </shadow> <block type="get_value" id="QIe4G%f(W=EB2]L_b(D1"> <field name="ATTR">val</field> <field name="OID">sonoff.0.Aqua_Sensoren.SR04_Distance</field> </block> </value> </block> </value> <value name="ADD16"> <block type="text" id="UkHW*DS)=Efk5Fi~AZ,}"> <field name="TEXT">zentimeter,,</field> </block> </value> </block> </value> <next> <block type="debug" id="D_yqFb7p01G?z`)D1lV^"> <field name="Severity">log</field> <value name="TEXT"> <shadow type="text" id="r`kSo-A0u)nsQQt?(Kmp"> <field name="TEXT">script ausgeführt</field> </shadow> </value> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </xml>
Das komplette Blockly dann halt nur aufgebaut in Node Red das wäre Mega -
Aktuell habe ich 23 Blocklys die ich so umständlich schalten muss wenn ich die komplett in Node Red hätte wäre das Spitze. Wenn ich eine vorlage habe verstehe ich dann auch in der hinsicht Node Red aber ohne vorlage klappt das nicht.
Wenn du das eine Blockly für mich produzieren könntest wäre das echt Super!!! -
@aphofis Nun ich kann es zwar versuchen, aber dann musst Du mir schon helfen. Du müsstest aber ggf. diesen Haken in Deiner Adapterkonfig, dass alles in Strings gesetzt wird ausmachen - weil mir das echt zu blöd ist alles in Zeichenketten zu übersetzen.
Soweit ich das Blockly verstehe erstellt es einen Text, wenn Aquarium_Info getriggert wird und true ist und sendet erst mal den 1. Teils des Textes an speak
speak - ist das ein Datenpunkt?
dann wird Aquarium Info auf mit 1 Minute Verzögerung auf false gesetzt (warum ???)
dann wird ein weiterer Text an info geschickt
info - ist das ein Datenpunkt?Diese Minute wird gewartet - damit die Datenpunkte für den 2.Textteil aktualisiert wurden?
Wie sind die Datenpunkte im iobroker gespeichert?
Dieser Block ist ja sowohl im 1. wie im 2. Block identisch:
nur diese beiden Punkte für die Wassertemperatur sind unterschiedlich
heißt das der gleiche Text wird ausgegeben nur die Wassertemperatur ist unterschiedlich?
oder ändern sich alle Werte nach 1 Minute? -
@mickym sagte in Alexa ein befehl true oder false:
dann wird ein weiterer Text an info geschickt
info - ist das ein Datenpunkt?Also die Ausgabe ist per Alexa durchgehend.
1 Min verzögerung, damit der Datenpunkt nach ausgabe ende wieder auf false gesetzt wird für eine erneute abfrage.
Info ist ein Datenpunkt und nennt sich aquarium_info
Es sind mehrere sensor werte die alexa am stück ausgibt.wo sind die identisch !? ist einmal im aquarium oberschrank luft temp und luftfeuchtigkeit und das andere ist temp und luftfeuchtigkeit in der technik unten im schrank.
Es gibt zwei temp sensoren die im wasser stecken und es werden beide werte ausgegeben damit ich einen kontroll wert habe.
Mein Datenpunkt sieht so aus. Bzw alle die etwas schalten sollen.
alle werte beziehe ich über den sonoff adapter da alle meine sensoren an mehreren esp8266 nodeMCU angeschlossen sind die mit tasmota software laufen. -
@aphofis Ok - bei den Datenpunkten meinte ich eher die, die ausgelesen werden und da wäre es hilfreich bis ganz links den gesamten Pfad zu sehen.
@aphofis sagte in Alexa ein befehl true oder false:
@mickym sagte in Alexa ein befehl true oder false:
dann wird ein weiterer Text an info geschickt
info - ist das ein Datenpunkt?Also die Ausgabe ist per Alexa durchgehend.
1 Min verzögerung, damit der Datenpunkt nach ausgabe ende wieder auf false gesetzt wird für eine erneute abfrage.Warum - kann man dann noch dem der Punkt getriggert wurde sofort wieder auf false setzen (auch wenn es keinen Sinn macht) - da muss ich doch keine Minute warten? Oder besteht die Gefahr, dass man es aus Versehen zu häufig triggert, dann würde ich da einen anderen Schutzmeachnismus einbauen.
Info ist ein Datenpunkt und nennt sich aquarium_info
Es sind mehrere sensor werte die alexa am stück ausgibt.wo sind die identisch !? ist einmal im aquarium oberschrank luft temp und luftfeuchtigkeit und das andere ist temp und luftfeuchtigkeit in der technik unten im schrank.
Es gibt zwei temp sensoren die im wasser stecken und es werden beide werte ausgegeben damit ich einen kontroll wert habe.Nun der Text ist identisch und wie gesagt auch die Sensoren sind sowohl im unteren, wie im oberen Block weitgehenst identisch.
Ich habe mal den Text mit den Variablen/also Datenpunkten in Klammern geschrieben:
nach alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak
"Aquarium Werte,, Wasser,, '<sonoff.0.Aqua_Sensoren.DS18B20-2_Temperature>' Grad Celsius,, Luft,, '<sonoff.0.Aqua_Sensoren.DHT11-02_Temperature>' Grad Celsius,, Luftfeuchtigkeit,, '<sonoff.0.Aqua_Sensoren.DHT11-02_Humidity>' Prozent,, Technik Werte,, Wasser,, ,, Luft,,'<sonoff.0.Aqua_Sensoren.DHT11-05_Temperature>' Grad Celsius,, Luftfeuchtigkeit,,'<sonoff.0.Aqua_Sensoren.DHT11-05_Humidity>' Prozent,, Niveau,,'<sonoff.0.Aqua_Sensoren.SR04_Distance>' Zentimeter,,"
nach Aqua_Control.0.VIS.Meldungen.Info
"Aquarium Werte,, Wasser,, '<sonoff.0.Aqua_Sensoren.DS18B20_Temperature>' Grad Celsius,, Luft,, '<sonoff.0.Aqua_Sensoren.DHT11-02_Temperature>' Grad Celsius,, Luftfeuchtigkeit,, '<sonoff.0.Aqua_Sensoren.DHT11-02_Humidity>' Prozent,, Technik Werte,, Wasser,, ,, Luft,,'<sonoff.0.Aqua_Sensoren.DHT11-05_Temperature>' Grad Celsius,, Luftfeuchtigkeit,,'<sonoff.0.Aqua_Sensoren.DHT11-05_Humidity>' Prozent,, Niveau,,'<sonoff.0.Aqua_Sensoren.SR04_Distance>' Zentimeter,,"
Den Einzigen Unterschied den ich erkennen kann ist, dass im oberen Teil also zu alexa2.0.Echo-Devices.G090LV0371040175.Commands.speak
die Wassertemperatur von sonoff.0.Aqua_Sensoren.DS18B20-2_Temperature kommt und unten, also zu Aqua_Control.0.VIS.Meldungen.Info nur von sonoff.0.Aqua_Sensoren.DS18B20_Temperature.
Ich frage deshalb - weil ich das halt umständlich finde nochmal alles bis auf einen Unterschied auszulesen, anstelle die 5 Parameter EINMAL auszulesen und nur den einen der unterschiedlich ist je einmal auszulesen.
Na egal - ich mach mal los mit dem was ich sehe und zwar einfach mit entprellen egal was in der Auquarium_Info Node steht. Das heißt es wird einfach angetriggert, wenn man quasi einen Button drückt.
-
@aphofis So Dein Flow ist fertig.
Ich hab das etwas abgeändert. Das heißt in Aquarium_Info muss nun nicht mehr true oder false stehen, sondern es ist egal. Der Flow fängt zu laufen an, wenn Du den Datenpunkt aktualisierst. Mit was ist egal - somit kann man diesen Datenpunkt als Button definieren.
Damit aber keine Kollisionen zu unbeabsichtigten mehrfach Starts kommt, startet der Flow nur, wenn sich der Datenpunkt in Aquarium_Info 1 Minute lang nicht geändert bzw. aktualisiert wurde.
So wie ich das verstanden habe schickst Du einmal Text an eine Alexa Node - die wohl spricht und einmal an vis zur Info.
Beide sind meines Erachtens in dem Flow identisch, bis auf die Wassertemperatur. Deshalb werden die identischen Parameter zuerst ausgelesen und nur die unterschiedlichen Wassertemperaturen für Alexa und VIS geschickt. Logisch erscheint mir das nicht, aber so interpretiere ich das Blockly.
Zum Auslesen der Datenpunkte habe ich diese erstmal in einem String zusammengefasst damit man nicht viele Nodes machen muss um sich die Werte zu holen, sondern es werden die verschiedenen Werte anhand des msg.topic geholt.
In dem ersten Node "Prepare Topic Array" befindet sich also ein String mit den Namen der Sensoren:
DHT11-02_Temperature,DHT11-05_Temperature,DHT11-02_Humidity,DHT11-05_Humidity,SR04_Distance
Dann wird ein Array aus msg.topics gemacht und daraus mit Einzelnachrichten die Werte geholt. (in IoB read value).
Da es 5 Werte sind, werden diese in der JOIN Node gesammelt und dann als 1 Objekt weiterbehandelt. Dann werden die unterschiedlichen Wassertemperaturen für Alexa und Vis geholt.
In der Vorlage werden dann die verschiedenen Objekte in den gewünschten Text eingefügt und dann an den Alexa Datenpunkt bzw. VIS geschickt.
Der Text sieht in meinen Test so aus - das musst halt ggf. in der Vorlage anpassen.
Aquarium Werte,,Wasser,,21 Grad Celsius,,Luft,,22 Grad Celsius,,Luftfeuchtigkeit,,42 Prozent,,Technik Werte,,Wasser,,Luft,,25 Grad Celsius,,Luftfeuchtigkeit,,45 Prozent,,Niveau,,3.2 Zentimeter,,
Und hier der Flow - viel Spaß damit.
Edit - kaum schreibt man was - schon fällt einem eine Verbesserung ein.
Also es werden nun alle benötigten Sensorwerte über das Array eingelesen und dann nur in den Textvorlagen unterschiedlich verwendet:Der Flow schaut nun so aus - also einfacher:
Hier wieder zum Importieren:
Ach übrigens wenn diese Aquarium_Info Node nur dem Zweck gedient haben sollte, dass diese Info ausgegeben wird, dann kannst den Datenpunkt auch löschen und die Alexnode direkt vorne anflanschen und diesen Flow triggern..
-
@mickym sagte in Alexa ein befehl true oder false:
die Wassertemperatur von sonoff.0.Aqua_Sensoren.DS18B20-2_Temperature kommt und unten, also zu Aqua_Control.0.VIS.Meldungen.Info nur von sonoff.0.Aqua_Sensoren.DS18B20_Temperature.
Achso Sorry war schon spät heute nacht.
Ja das eine ist der Wert den Alexa ausgibt das andere wird an die VIS grafik als anzeige gesendet.So wie ich das verstanden habe schickst Du einmal Text an eine Alexa Node - die wohl spricht und einmal an vis zur Info. Ja so ist es.
ach ja die ",," im Text ist damit Alexa einen Absatz beim sprechen macht und nicht den ganzen Text durch rasselt.
alexa.local.node muss dann der buttton sein weil die den datenpunkt triggert wenn man halt sagt alexa, aquarium info. In Alexa habe ich eine routine die mit dem verknüpften gerät verbunden ist und diesen bei sprach befehl dann auslöst.Ach übrigens wenn diese Aquarium_Info Node nur dem Zweck gedient haben sollte, dass diese Info ausgegeben wird, dann kannst den Datenpunkt auch löschen und die Alexnode direkt vorne anflanschen und diesen Flow triggern..
Das ist echt Mega!!! ja ich werde es testen und berichten und auch ob ich den flow verstehe.
Vielen vielen dank schon mal -
@mickym
Ich verstehe das nicht, Alexa findet das Gerät nicht.
Ich habe das jetzt so:[ { "id": "6dac84f0.fc2eec", "type": "tab", "label": "Aquarium Info", "disabled": false, "info": "" }, { "id": "ccc7fafa.991e28", "type": "alexa-local", "z": "6dac84f0.fc2eec", "devicename": "aquarium-info", "inputtrigger": false, "x": 160, "y": 360, "wires": [ [ "bd2e320e.621fa" ] ] }, { "id": "1668a72a.b395f9", "type": "ioBroker in", "z": "6dac84f0.fc2eec", "name": "", "topic": "Aqua_Control.0.System.Aquarium_Info", "payloadType": "value", "onlyack": "", "func": "all", "gap": "", "fireOnStart": "false", "x": 250, "y": 300, "wires": [ [ "bd2e320e.621fa" ] ] }, { "id": "bbf2e8af.f99348", "type": "ioBroker out", "z": "6dac84f0.fc2eec", "name": "Zur Alexa", "topic": "alexa2.0.Echo-Devices.G0913L06031202PA.Commands.speak", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1240, "y": 540, "wires": [] }, { "id": "1d32159.909d4ea", "type": "ioBroker out", "z": "6dac84f0.fc2eec", "name": "Zu VIS", "topic": "Aqua_Control.0.VIS.Meldungen.Info", "ack": "false", "autoCreate": "false", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1230, "y": 660, "wires": [] }, { "id": "bd2e320e.621fa", "type": "trigger", "z": "6dac84f0.fc2eec", "name": "", "op1": "true", "op2": "", "op1type": "bool", "op2type": "nul", "duration": "1", "extend": true, "overrideDelay": false, "units": "min", "reset": "", "bytopic": "all", "topic": "topic", "outputs": 1, "x": 220, "y": 520, "wires": [ [ "343c8622.5d3e9a" ] ] }, { "id": "343c8622.5d3e9a", "type": "change", "z": "6dac84f0.fc2eec", "name": "Prepare topic Array", "rules": [ { "t": "set", "p": "payload", "pt": "msg", "to": "DHT11-02_Temperature,DHT11-05_Temperature,DHT11-02_Humidity,DHT11-05_Humidity,SR04_Distance,DS18B20_Temperature,DS18B20-2_Temperature", "tot": "str" }, { "t": "set", "p": "payload", "pt": "msg", "to": "$split(payload,',')\t", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 230, "y": 580, "wires": [ [ "4996aa5b.1a3804" ] ] }, { "id": "4996aa5b.1a3804", "type": "split", "z": "6dac84f0.fc2eec", "name": "", "splt": "\\n", "spltType": "str", "arraySplt": 1, "arraySpltType": "len", "stream": false, "addname": "", "x": 200, "y": 640, "wires": [ [ "7054b21c.8cec8c" ] ] }, { "id": "7054b21c.8cec8c", "type": "change", "z": "6dac84f0.fc2eec", "name": "", "rules": [ { "t": "set", "p": "topic", "pt": "msg", "to": "'sonoff.0.Aqua_Sensoren.' & payload", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 220, "y": 700, "wires": [ [ "2b083a26.6974f6" ] ] }, { "id": "2b083a26.6974f6", "type": "ioBroker get", "z": "6dac84f0.fc2eec", "name": "", "topic": "", "attrname": "payload", "payloadType": "value", "x": 220, "y": 760, "wires": [ [ "7bb08a4a.065a94" ] ] }, { "id": "74799a5e.d605e4", "type": "join", "z": "6dac84f0.fc2eec", "name": "", "mode": "custom", "build": "object", "property": "payload", "propertyType": "msg", "key": "topic", "joiner": "\\n", "joinerType": "str", "accumulate": false, "timeout": "", "count": "7", "reduceRight": false, "reduceExp": "", "reduceInit": "", "reduceInitType": "num", "reduceFixup": "", "x": 710, "y": 520, "wires": [ [ "64b3b101.6e759" ] ] }, { "id": "7bb08a4a.065a94", "type": "change", "z": "6dac84f0.fc2eec", "name": "parts löschen und topic kürzen", "rules": [ { "t": "delete", "p": "parts", "pt": "msg" }, { "t": "change", "p": "topic", "pt": "msg", "from": ".*Aqua_Sensoren\\.(.*)", "fromt": "re", "to": "$1", "tot": "str" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 730, "y": 440, "wires": [ [ "74799a5e.d605e4" ] ], "info": "# msg.parts löschen und msg.topic kürzen\n\nDie msg.parts müssen gelöscht werden, da durch das Holen mit den get nodes das automatische Zusammenfügen in der JOIN Node nicht mehr funktioniert. \n\nDis msg.topic werden gekürzt, damit das etwas leichter zu handhaben ist. " }, { "id": "c7dddee8.9f403", "type": "template", "z": "6dac84f0.fc2eec", "name": "", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "Aquarium Werte,,Wasser,,{{payload.DS18B20-2_Temperature}} Grad Celsius,,Luft,,{{payload.DHT11-02_Temperature}} Grad Celsius,,Luftfeuchtigkeit,,{{payload.DHT11-02_Humidity}} Prozent,,Technik Werte,,Wasser,,Luft,,{{payload.DHT11-05_Temperature}} Grad Celsius,,Luftfeuchtigkeit,,{{payload.DHT11-05_Humidity}} Prozent,,Niveau,,{{payload.SR04_Distance}} Zentimeter,,", "output": "str", "x": 1020, "y": 540, "wires": [ [ "bbf2e8af.f99348" ] ] }, { "id": "64b3b101.6e759", "type": "change", "z": "6dac84f0.fc2eec", "name": "cm runden", "rules": [ { "t": "set", "p": "payload.SR04_Distance", "pt": "msg", "to": "$round(payload.SR04_Distance, 1)\t", "tot": "jsonata" } ], "action": "", "property": "", "from": "", "to": "", "reg": false, "x": 730, "y": 600, "wires": [ [ "c7dddee8.9f403", "2307892e.987d86" ] ] }, { "id": "2307892e.987d86", "type": "template", "z": "6dac84f0.fc2eec", "name": "", "field": "payload", "fieldType": "msg", "format": "handlebars", "syntax": "mustache", "template": "Aquarium Werte,,Wasser,,{{payload.DS18B20_Temperature}} Grad Celsius,,Luft,,{{payload.DHT11-02_Temperature}} Grad Celsius,,Luftfeuchtigkeit,,{{payload.DHT11-02_Humidity}} Prozent,,Technik Werte,,Wasser,,Luft,,{{payload.DHT11-05_Temperature}} Grad Celsius,,Luftfeuchtigkeit,,{{payload.DHT11-05_Humidity}} Prozent,,Niveau,,{{payload.SR04_Distance}} Zentimeter,,", "output": "str", "x": 1020, "y": 660, "wires": [ [ "1d32159.909d4ea" ] ] } ]
-
IoB read value gibt nur hier intern im flow den temp wert aus wenn ich den datenpunkt aquarium_info manuell auf true setze ansonsten passiert nix.
in der log meldet node-red dieses:node-red.0 2021-04-10 18:44:50.453 error (24953) 10 Apr 18:44:50 - [error] [change:cm runden] Ungültiger JSONata Ausdruck: Argument 1 of function "round" does not match function signature node-red.0 2021-04-10 18:44:41.094 info (26545) Automatic objects creation is not enabled. You can enable it in the node configuration
-
@aphofis Als erstes musst Du mal die unselige Option ausmachen . in der Adapterkonfig, dass alles in Strings umgewandelt wird. Mach bitte den Haken raus. Ok Du hast jetzt den Auslöser auf 5 s gesetzt. Um den Flow zu testen ist es besser eine Inject Node an den Prepare topic Array zu hängen und dann manuell zu triggern.
Um den Flow zu debuggen hängst Du eine Debug Node an die nächste Node und postest das Debug Fenstern - dann hangelt mich so weiter.
-
@mickym
ist jetzt ausgeschaltet
debug teste ich