NEWS
Rasenmäher Endzeit - Startzeit = Dauer speichern
-
ok - aber könntest du etwas spezifischer werden? ggf. hast du ein Blockly Bsp dafür?
- Frage wie komme ich an den Zeitstempel ran?
- Frage wie läuft das mit den Subtrahieren der Zeiten?
- Wenn der Mäher startet wird der Status geändert und die Telegram Nachricht verschickt. Dann ist das Programm beendet und startet erst wieder wenn der Mäher zurück in die Station fährt. D.h. ich müsst den Zeitstempel irgendwie speichern jenseits der Laufzeit des Programms.
-
@Accu
Ich hab da mal etwas zusammengebaut. Musst natürlich deine Datenpunkte zum triggern und Ausgabe noch anpassen.[Zeiterfassung Datenpunkte]
<xml xmlns="http://www.w3.org/1999/xhtml"> <variables> <variable type="" id="r)M)J`L2gdR+-rjVpLQA">Dauer</variable> <variable type="" id="moxiY#/V659kTQ}a:eJ[">tage</variable> <variable type="" id="kE/kiClb=y?}6)j?_-_R">std</variable> <variable type="" id="F..#nc_!4s(/0NkG7Dzk">min</variable> <variable type="" id="DRJ.iVA5f}kG0snR{]c|">sec</variable> </variables> <block type="on" id="G+naKWg/?aO.iY}4H:fn" x="-237" y="338"> <field name="OID">0_userdata.0.Ende_zeit</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION">false</field> <statement name="STATEMENT"> <block type="variables_set" id="ioolV*0*~aK99._xGf4i"> <field name="VAR" id="r)M)J`L2gdR+-rjVpLQA" variabletype="">Dauer</field> <value name="VALUE"> <block type="math_arithmetic" id=")e(-n.xw|!JwGur~u]Xp"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="{V+3e5Y~6(S)[V8]T7:3"> <field name="NUM">1</field> </shadow> <block type="get_value" id="wV+=)oo])APJ-up+Kcm3"> <field name="ATTR">ts</field> <field name="OID">0_userdata.0.Ende_zeit</field> </block> </value> <value name="B"> <shadow type="math_number" id="vuc,}tX}rmJ[hSp^q0q%"> <field name="NUM">1</field> </shadow> <block type="get_value" id="AVqB]cjIOx:y?d;U+jqQ"> <field name="ATTR">ts</field> <field name="OID">0_userdata.0.Start_Zeit</field> </block> </value> </block> </value> <next> <block type="variables_set" id="d#Mf%Vp1N]rbGTAqMJ1%"> <field name="VAR" id="moxiY#/V659kTQ}a:eJ[" variabletype="">tage</field> <value name="VALUE"> <block type="math_round" id="kl^`w62qML7NfK6obI)R"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number" id="9?PDN?vq0I(1J0/t@VTk"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="Vq4e$#!w=`xg_}Su1.ED"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="dtfN1M%5RNb0]xbUEm:R"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="P2DL%-5VMuQs8M.vDPhQ"> <field name="VAR" id="r)M)J`L2gdR+-rjVpLQA" variabletype="">Dauer</field> </block> </value> <value name="B"> <shadow type="math_number" id="xN73Vg#|I~62Ed=PUT%^"> <field name="NUM">86400000</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="XzKStL$rv+783U;lrI1]"> <field name="VAR" id="r)M)J`L2gdR+-rjVpLQA" variabletype="">Dauer</field> <value name="VALUE"> <block type="math_arithmetic" id="@PeJ}u3X):vUjeEbh}b!"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="vZXOD9^Cw`KiCMM5BUbH"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="rYu:XuWA=@c.X[oR~2QX"> <field name="VAR" id="r)M)J`L2gdR+-rjVpLQA" variabletype="">Dauer</field> </block> </value> <value name="B"> <shadow type="math_number" id="5+De(qT}`Jjl^O;@eM5n"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="[=RIpUA6gN7kz_Q7;K9*"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="D[UXt!BH2NGCqR?Q|UiO"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="R-1S]-Y`CW]Ug]ZZf)]!"> <field name="VAR" id="moxiY#/V659kTQ}a:eJ[" variabletype="">tage</field> </block> </value> <value name="B"> <shadow type="math_number" id="962lAEL@@9*Z{v)YClgt"> <field name="NUM">86400000</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="4}N56*i%8!#K?;dkAaYf"> <field name="VAR" id="kE/kiClb=y?}6)j?_-_R" variabletype="">std</field> <value name="VALUE"> <block type="math_round" id="i_ICM,.fM!CQOVV+#;~G"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number" id="9?PDN?vq0I(1J0/t@VTk"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="|=g9W]nda)Y)2k/[Wv_="> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="dtfN1M%5RNb0]xbUEm:R"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="3n^zkm.#vR+K0H6t4UM_"> <field name="VAR" id="r)M)J`L2gdR+-rjVpLQA" variabletype="">Dauer</field> </block> </value> <value name="B"> <shadow type="math_number" id="N`]ykTeeI#)Hf$%e]L2!"> <field name="NUM">3600000</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="h/81*9P*8[4VR,|Y/l[/"> <field name="VAR" id="r)M)J`L2gdR+-rjVpLQA" variabletype="">Dauer</field> <value name="VALUE"> <block type="math_arithmetic" id="CfGZ4A5O~064DV0BtM.u"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="vZXOD9^Cw`KiCMM5BUbH"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="WS(P/bX7d^ul}?60y)qY"> <field name="VAR" id="r)M)J`L2gdR+-rjVpLQA" variabletype="">Dauer</field> </block> </value> <value name="B"> <shadow type="math_number" id="5+De(qT}`Jjl^O;@eM5n"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="i}+8JL_Q#0S}Vl#t-Ke3"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="D[UXt!BH2NGCqR?Q|UiO"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="?bB0b4ITZD7):P/T1jKh"> <field name="VAR" id="kE/kiClb=y?}6)j?_-_R" variabletype="">std</field> </block> </value> <value name="B"> <shadow type="math_number" id=",;(Ox_#1$7=rTId$yc/["> <field name="NUM">3600000</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="mi|Nsm(ddYqrJk$i-`|#"> <field name="VAR" id="F..#nc_!4s(/0NkG7Dzk" variabletype="">min</field> <value name="VALUE"> <block type="math_round" id="E$./CjOLf~Yz!Ti6iR_D"> <field name="OP">ROUNDDOWN</field> <value name="NUM"> <shadow type="math_number" id="9?PDN?vq0I(1J0/t@VTk"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="n7z]@zr[x6NHv3OU*e9*"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="dtfN1M%5RNb0]xbUEm:R"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="HzzXG8yC)eLfjq|H~v3;"> <field name="VAR" id="r)M)J`L2gdR+-rjVpLQA" variabletype="">Dauer</field> </block> </value> <value name="B"> <shadow type="math_number" id="uem@3Cu$;SXmgtnx-#P6"> <field name="NUM">60000</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="variables_set" id=".aKU3yi6Vn}Q}8h{O;sl"> <field name="VAR" id="r)M)J`L2gdR+-rjVpLQA" variabletype="">Dauer</field> <value name="VALUE"> <block type="math_arithmetic" id="%%%KFqfG)8ex=|_VKxy^"> <field name="OP">MINUS</field> <value name="A"> <shadow type="math_number" id="vZXOD9^Cw`KiCMM5BUbH"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="+DL#x{a]cSnzG6V;=dK1"> <field name="VAR" id="r)M)J`L2gdR+-rjVpLQA" variabletype="">Dauer</field> </block> </value> <value name="B"> <shadow type="math_number" id="5+De(qT}`Jjl^O;@eM5n"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="pN|DbN#YE,WTL-}C,n0|"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="D[UXt!BH2NGCqR?Q|UiO"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="==;p=)Y`/E0ocGx$e(WM"> <field name="VAR" id="F..#nc_!4s(/0NkG7Dzk" variabletype="">min</field> </block> </value> <value name="B"> <shadow type="math_number" id="j@2_L0kpv^S%`n0TR7~v"> <field name="NUM">60000</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="variables_set" id="{qDt~P^xXdlUYMEJ/JN{"> <field name="VAR" id="DRJ.iVA5f}kG0snR{]c|" variabletype="">sec</field> <value name="VALUE"> <block type="math_round" id="DEX*kqOIekO!tF;KFU:i"> <field name="OP">ROUND</field> <value name="NUM"> <shadow type="math_number" id="9?PDN?vq0I(1J0/t@VTk"> <field name="NUM">3.1</field> </shadow> <block type="math_arithmetic" id="[@!2`6uwcXC0Jl1}*fde"> <field name="OP">DIVIDE</field> <value name="A"> <shadow type="math_number" id="dtfN1M%5RNb0]xbUEm:R"> <field name="NUM">1</field> </shadow> <block type="variables_get" id="AT^9^[wo;G$VGKTgabU:"> <field name="VAR" id="r)M)J`L2gdR+-rjVpLQA" variabletype="">Dauer</field> </block> </value> <value name="B"> <shadow type="math_number" id="9@OD[Q0RL7.#0B6M$?d8"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="control" id="7HfM6x`@DGG2)WpoYAg0"> <mutation delay_input="false"></mutation> <field name="OID">0_userdata.0.Laufzeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text_join" id=":r_DP)dXj@Jv~7?yyyK_"> <mutation items="8"></mutation> <value name="ADD0"> <block type="variables_get" id="!EZopb^xh[~,gG@4W1,w"> <field name="VAR" id="moxiY#/V659kTQ}a:eJ[" variabletype="">tage</field> </block> </value> <value name="ADD1"> <block type="text" id="+h^zTHY7^I!hRy7N0WNH"> <field name="TEXT">Tage </field> </block> </value> <value name="ADD2"> <block type="variables_get" id="sOY$z$z[]a=/h+V@Uz2H"> <field name="VAR" id="kE/kiClb=y?}6)j?_-_R" variabletype="">std</field> </block> </value> <value name="ADD3"> <block type="text" id=")lj,hPOWg~tF(AEaY-wB"> <field name="TEXT">Stunden </field> </block> </value> <value name="ADD4"> <block type="variables_get" id="JBAVOqF#j#wA#5hA%X4q"> <field name="VAR" id="F..#nc_!4s(/0NkG7Dzk" variabletype="">min</field> </block> </value> <value name="ADD5"> <block type="text" id="!IyHG|A%`h(?iFXz+O^A"> <field name="TEXT">Minuten </field> </block> </value> <value name="ADD6"> <block type="variables_get" id="naIdEV$uD!hEu`d/Rcno"> <field name="VAR" id="DRJ.iVA5f}kG0snR{]c|" variabletype="">sec</field> </block> </value> <value name="ADD7"> <block type="text" id="o)$!!Z38,;4;O5tR|7,i"> <field name="TEXT">Sekunden</field> </block> </value> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> <block type="on_ext" id="jh%XH4ahFGj8ex*0cmcU" x="538" y="563"> <mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="zTLUz5oLT;q5NQ_ZpDj3"> <field name="oid">0_userdata.0.Trigger_Zeit</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="WZ?m9H)8i(AHoS=ox4;8"> <mutation else="1"></mutation> <value name="IF0"> <block type="get_value" id="z;Qfp@Hq/4(-z}q{*Mrj"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Trigger_Zeit</field> </block> </value> <statement name="DO0"> <block type="control" id=";sgH],6b8N6^1+T`}t4v"> <mutation delay_input="false"></mutation> <field name="OID">0_userdata.0.Start_Zeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="time_get" id="Bn[/.Kio]s[aEbz87o_q"> <mutation format="false" language="false"></mutation> <field name="OPTION">hh:mm:ss</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="control" id="oPtO7aaEV:c6aG{blb)w"> <mutation delay_input="false"></mutation> <field name="OID">0_userdata.0.Ende_zeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="time_get" id="[Kv?K3P;DLZ@]aS]zqy]"> <mutation format="false" language="false"></mutation> <field name="OPTION">hh:mm:ss</field> </block> </value> </block> </statement> </block> </statement> </block> </xml>
-
@t-master
Den niederwertigsten Teil (Sekunden) würde ich nicht abrunden, sondern runden. -
@paul53
Ja hast Recht. Habe meinen Beitrag angepsst. -
@Accu sagte:
Frage wie komme ich an den Zeitstempel ran?
Wenn es einen Datenpunkt gibt, der zu Beginn einschaltet (Wert true) und zum Ende ausschaltet (Wert false), kann man mit diesem auf "ist unwahr" triggern:
Falls der Datenpunkt auch ohne Wertänderung aktualisiert wird, muss man auf "wurde geändert" triggern und dann auf "schaltet aus" prüfen.
-
vielen Dank schon einmal an alle für eure Mühe.
Ich stehe leider immer noch etwas aufn Schlauch (Bin Blockly Newbie).Ich nutze den Robonect Adapter für meinen Mäher. Darin gibt es einen Datenpunkt mit dem Status, den ich zum Triggern nutze.
Status = 2 --> der Mäher mäht
Status = 4 --> der Mäher ist auf der Station und lädt.Ich verstehe nicht ganz wie ihr die Zeiten abgreift.
Aktuell schaut mein Skript so aus:
<xml xmlns="http://www.w3.org/1999/xhtml"> <block type="on" id="cs~te#thQW#;E}~%[dl:" x="-1987" y="-687"> <field name="OID">robonect.0.status.status</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="ACZ2l@qR5uVDesc;Qw(m"> <mutation elseif="1"></mutation> <value name="IF0"> <block type="logic_compare" id="t;NAYM2tTT4]R)..I]XM"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="pHf3`tl,{,uo-6=UeC|6"> <field name="ATTR">val</field> <field name="OID">robonect.0.status.status</field> </block> </value> <value name="B"> <block type="convert_tonumber" id="w*:x~*?fv-YO~Y{vWVjj"> <value name="VALUE"> <block type="math_number" id="3;54XhGs31;DcGiQ~n3,"> <field name="NUM">2</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="telegram" id="2!p+PV1saI=q!@K|Ir|q"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="8:0Y,wE6|ev^*~mt]8ol"> <field name="TEXT">Paul fängt jetzt das Rasenmähen an.</field> </shadow> </value> <next> <block type="control" id="vQd|F#_`Z-90cVo}Q2ly"> <mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G070RR138312054L.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="text" id="Y+SB`RY.pMm9IWrjo:e-"> <field name="TEXT">Paul sagt: Kannst Du Dein Haus nicht mehr erspähen wird es höchste Zeit zum Rasenmähen </field> </block> </value> <next> <block type="control" id="WBD4.25Ie$LsWVZz3j_S"> <mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF0971521B4M.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">10</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="text" id="k0x?~2-IV%5,qSXV?(Ql"> <field name="TEXT">Paul sagt: Unkraut ist die Opposition der Natur gegen die Regierung der Gärtner.</field> </block> </value> <next> <block type="control" id="[JwN;JQ/]mKe.S}VXujz"> <mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF11745408CD.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">15</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="text" id="`,@Qh+garav~A)*Lr6nv"> <field name="TEXT">Paul sagt: Unkraut ist alles, was nach dem Jäten wieder wächst</field> </block> </value> <next> <block type="controls_if" id="QgDbDr/L=mbSt~={qDDo"> <value name="IF0"> <block type="logic_compare" id="6[`9E.kG+wc45PGs2#4-"> <field name="OP">EQ</field> <value name="A"> <block type="convert_toboolean" id="xBo%6UVn:Ko~/a-/?A-j"> <value name="VALUE"> <block type="get_value" id="Xg^YXOIlR!/nxu#g83JX"> <field name="ATTR">val</field> <field name="OID">lgtv.0.states.on</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="X|5gfom?`O;qRQa^NO5}"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="r^MMa/-qkidv|PcPP)0!"> <mutation delay_input="false"></mutation> <field name="OID">lgtv.0.states.popup</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="XOQf+6$.T4^s[8v@2K#i"> <field name="TEXT">Paul sagt: Was ist der Unterschied zwischen einem Minirock und einem Rasenmäher?…Faß mal drunter…</field> </block> </value> </block> </statement> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> <value name="IF1"> <block type="logic_compare" id="c)w`SEDk{Hsofx?CMA,*"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="B45dWsO?(rpm,zhi$%F7"> <field name="ATTR">val</field> <field name="OID">robonect.0.status.status</field> </block> </value> <value name="B"> <block type="convert_tonumber" id="(TtX@Qdn%wqt;/JDLAz/"> <value name="VALUE"> <block type="math_number" id="wRc!3;oyFtl0#.FCx9qq"> <field name="NUM">4</field> </block> </value> </block> </value> </block> </value> <statement name="DO1"> <block type="telegram" id="6bh7.~7@tF^[(r`[i#4~"> <field name="INSTANCE"></field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id="P=n(ben`N(}o,yEGI}Ux"> <field name="TEXT">Paul ist jetzt wieder in der Ladestation und läd auf.</field> </shadow> </value> </block> </statement> </block> </statement> </block> </xml>
MOD-Edit: Code in code-tags gesetzt!
-
-
-
-
oh wow -- super lieben Dank. Ich probiere es gleich mal aus und berichte
-
@paul53 hi, danke noch einmal für deine mühe.
Ich habe mittlerweile etwas erfahrungen sammeln können und habe folgendes zu berichten. der mäher läuft bei mir 2x am tag. einmal am mittag und einmal abends.
nach dem abendlichen laufen passt alles. die zeiten werden richtig ausgegeben und an telegramm übermittelt. leider macht seltsamerweise der mittagslauf probleme. hier werden immer zeiten von 8min, 7min oder 9min etc. ausgegeben obwohl der mäher fast eine stunde läuft. keine ahnung warum. kann es damit zusammenhängen, dass die variablen nicht resettet werden? ich starte zudem meinen Raspberry mit iobroker jeden nacht um 4uhr morgen neu. keine ahnung ob es damit zusammen hängt.
hast du vielleicht noch eine idee? -
@Accu sagte:
hast du vielleicht noch eine idee?
Nein. Zeichne mal den Status mit History auf. Vielleicht macht Status 2 mittags eine Pause ?
-
@paul53 hi, ich habe irgendwie probleme den adapter zu installieren.
Keine ahnung warum das nicht geht:gyp: Call to 'pkg-config pixman-1 --libs' returned exit status 1 while in binding.gyp. while trying to load binding.gyp gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1gyp ERR! stack at ChildProcess.onCpExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:351:16)gyp ERR! stack at ChildProcess.emit (events.js:198:13)gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12) gyp ERR! System Linux 4.19.80-v7+gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--module=/opt/iobroker/node_modules/canvas/build/Release/canvas.node" "--module_name=canvas" "--module_path=/opt/iobroker/node_modules/canvas/build/Release" "--napi_version=4" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=node-v64"gyp ERR! cwd /opt/iobroker/node_modules/canvasgyp ERR! node -v v10.16.0gyp ERR! node-gyp -v v5.0.5gyp ERR! not ok node-pre-gyp ERR! build error node-pre-gyp ERR! stack Error: Failed to execute '/usr/local/bin/node /usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --module=/opt/iobroker/node_modules/canvas/build/Release/canvas.node --module_name=canvas --module_path=/opt/iobroker/node_modules/canvas/build/Release --napi_version=4 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=node-v64' (1)node-pre-gyp ERR! stack at ChildProcess.<anonymous> (/opt/iobroker/node_modules/canvas/node_modules/node-pre-gyp/lib/util/compile.js:83:29)node-pre-gyp ERR! stack at ChildProcess.emit (events.js:198:13)node-pre-gyp ERR! stack at maybeClose (internal/child_process.js:982:16)node-pre-gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)node-pre-gyp ERR! System Linux 4.19.80-v7+node-pre-gyp ERR! command "/usr/local/bin/node" "/opt/iobroker/node_modules/canvas/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build"node-pre-gyp ERR! cwd /opt/iobroker/node_modules/canvasnode-pre-gyp ERR! node -v v10.16.0 node-pre-gyp ERR! node-pre-gyp -v v0.11.0node-pre-gyp ERR! not ok
-
@Accu sagte:
ich habe irgendwie probleme den adapter zu installieren.
Den History-Adapter ? Wenn History nicht funktioniert, dann Logge den Status:
-
hi,
leider gibt es mindestens 2 Stati, die der Mäher annehmen kann. Ich weiß nicht ob man das mit 2 oder 3 abfangen kann?2: Automower mäht
3: Automower sucht die Ladestation -
@Accu sagte:
Ich weiß nicht ob man das mit 2 oder 3 abfangen kann?
Wenn auf "vorheriger Wert = 2" geprüft wird, ist Mähen gerade beendet, egal welcher neue Status angenommen wird.
-
@paul53 ich habe es jetzt doch mit dem History hinbekommen und den Status mal mitgeloggt (siehe unten).
Heute Mittag kam wieder die Meldung dass der Mäher angeblich nur 4 min gefahren sei.
Seltsam dass der Code nach 4min wechselt.Anbei einmal die Telegramm Meldung und die Robo Codes die es gibt.
-
-
Ich habe heute einmal darauf geachtet und im Log nachgesehen.
um 14 uhr war der Start. (Status 2)
um 15 Uhr war das Endeblöderweise wird, warum auch immer kurz vor Ende noch einmal der Status 2 gesetzt (14:59)
kann man das irgendwie programmtechnisch abfangen?
-
@Accu sagte:
kurz vor Ende noch einmal der Status 2 gesetzt (14:59), kann man das irgendwie programmtechnisch abfangen?
Mit Trigger "wurde geändert" und Differenzbildung "letzte Änderung" - "vorherige letzte Änderung" wird diese Aktualisierung ignoriert, da es keine Wertänderung ist.