NEWS
Test Fröling Connect v0.0.x
-
Leider taucht der Fehler doch wieder auf und die Heizung geht nicht auf „Absenken“. Hier der aktuelle Fehler:
froeling.0 2022-04-29 08:16:14.815 error {"timestamp":"2022-04-29T06:16:14.784+00:00","status":403,"error":"Forbidden","message":"","path":"/v1.0/resources/facility/setParam/34022"}
Der erste Teil des Blockly-Skripts sieht so aus:
-
@gr
Ich hab gerade den SetValue bei mir ausprobiert und es funktioniert ohne Probleme.
Erhalte auch keine Fehlermeldung.
Passiert das auch, wenn du den Wert manuell in den Objekten umstellst? -
@strobelix Hab den Fehler gefunden. Ich hatte einfach den falschen Datenpunkt benutzt. Jetzt habe ich es richtig eingestellt und es funktioniert ohne Probleme.
-
Danke für den Adapter @tombox ,
hätte eine Frage dazu kann ich die Pellets Austragung auch über den Iobroker steuern?
Denn bei mir ist eingestellt jeweils 0 Uhr 1. und 2. Zeit, doch was mir aufgefallen ist, sind nur mehr 1,2% im Pelletsbehälter vom Ofen, dann fängt der Ofen zum Zünden an und dann stellt er die Feuerung ein und holt sich die Pellets vom Silo, das ist ja ein Blödsinn, ich hätte vor, sollten nur mehr unter 50% Pellets im Pelletsbehälter sein daß sich der Ofen im ausgeschalteten Zustand die Pellets holt, dies würde ich dann über den iobroker steuern.
Ist das möglich und wenn ja welcher Punkt wäre das, und schaltet er dann bei 100% selbstständig ab?
Ich habe das jetzt mal so gelöst.
<block xmlns="https://developers.google.com/blockly/xml" type="schedule" id=";D(+y,aLtSszY)l8njq-" collapsed="true" x="138" y="38"> <field name="SCHEDULE">38 9,11,13,15,17 * * *</field> <statement name="STATEMENT"> <block type="controls_if" id="$l,/~Z](UC`JU32pF4ml"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="Oc#yNFy;x=uEApQ~(e1s"> <field name="OP">LT</field> <value name="A"> <block type="get_value" id="-%:HO`=Cxx!bv.opv3HR"> <field name="ATTR">val</field> <field name="OID">froeling.0.46035.details.Austragung.pelletsFillLevel-113.valueText</field> </block> </value> <value name="B"> <block type="math_number" id="HP0)1a|]HR$Ndb}A3~zp"> <field name="NUM">50</field> </block> </value> </block> </value> <statement name="DO0"> <block type="controls_if" id="=.s^67qOu(k9wu?Gn%[5"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="9$UP5!F~+SrMigvcHfEi"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="Os@bWxoP?M[*GcNfb5Qc"> <field name="ATTR">val</field> <field name="OID">froeling.0.46035.details.Kessel.kesselEinAus-9887.parameter.setValue</field> </block> </value> <value name="B"> <block type="math_number" id="g%XbpD0YpOKtp/wcA4.L"> <field name="NUM">1</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="6}-(H%*uxz0UV.U;%2~U"> <field name="VAR" id="/!q).NhQ1Ryxtm)p)xc:">neue_Zeit</field> <value name="VALUE"> <block type="math_arithmetic" id="o28GpJ^?Lg(~4F9f=3L^"> <field name="OP">ADD</field> <value name="A"> <shadow type="math_number" id="tddRBzRY_[NS#YAL~ze,"> <field name="NUM">1</field> </shadow> <block type="time_get" id="Ohj_q5xz5sY,9DW?73c,"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation> <field name="OPTION">object</field> </block> </value> <value name="B"> <shadow type="math_number"> <field name="NUM">1</field> </shadow> <block type="math_arithmetic" id="Pf:LDD6hJBt=P8*znZGd"> <field name="OP">MULTIPLY</field> <value name="A"> <shadow type="math_number" id="R%TR}VJC#.wq;A#[zD,;"> <field name="NUM">1800</field> </shadow> </value> <value name="B"> <shadow type="math_number" id="8HFni(1T2rn]Myc#Fk))"> <field name="NUM">1000</field> </shadow> </value> </block> </value> </block> </value> <next> <block type="control" id="Tx6W=TLz~mZ0U$OD.Chq"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">froeling.0.46035.componentList.Austragung-Austragung.startFirstFilling.setValue</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="convert_from_date" id="V^D7CE0(}b,qgfHmSa,E"> <mutation xmlns="http://www.w3.org/1999/xhtml" format="true" language="false"></mutation> <field name="OPTION">custom</field> <field name="FORMAT">SS:mm</field> <value name="VALUE"> <block type="variables_get" id="iO8az6C0=h?_%p-[,kXA"> <field name="VAR" id="/!q).NhQ1Ryxtm)p)xc:">neue_Zeit</field> </block> </value> </block> </value> </block> </next> </block> </statement> <statement name="ELSE"> <block type="control" id="7h`Qgl~qW_}ecg.o~5Hb"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">froeling.0.46035.componentList.Austragung-Austragung.startFirstFilling.setValue</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="7UfSNm;gYjGX.Y_D.$QO"> <field name="TEXT">00:00</field> </block> </value> </block> </statement> </block> </statement> <statement name="ELSE"> <block type="control" id="|#|~Ne[.FXosa2@M1D.|"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">froeling.0.46035.componentList.Austragung-Austragung.startFirstFilling.setValue</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="text" id="nbkuOJ)c|~M{cx_JLA4O"> <field name="TEXT">00:00</field> </block> </value> </block> </statement> </block> </statement> </block>
Hier wird unterm Tag alle 2 Stunden abgefragt wie voll der Pelletsbehälter im Ofen ist. ist er unter 50% dann wird die aktuelle Zeit abgefragt. Allerdings nur im Kesselzustand aus. Auf die aktuelle Zeit wird nun 30 Minuten draufgerechnet und die Zeit in die erste Befüllung eingetragen, Innerhalb 2 Minuten sollte dann der Befüllvorgang starten. Anderweitig ist Füllstand größer 50% bleibt Uhrzeit der 2 Befüllaktionen auf 00:00 Uhr oder sie wird wieder dahin gesetzt.
Ich weiß jetzt nur noch nicht inwieweit der Kessel dann auf aus stellt im Winterbetrieb, aktuell haben wir Sommerbetrieb und mache das Brauchwasser mit Heizstab warm außer die Temperatur fällt unter 58 Grad dann wird der Kessel eingeschaltet und heizt mir den kompletten Pufferspeicher durch.
-
@tombox
Zunächst mal tausend Dank für den code. Ich verwende zwar kein ioBrocker, aber der Javascript code funktioniert ja unabhängig davon (bei mir läuft ein ESP32 der alle 3 Stunden die Werte abfragt und in eine Datei schreibt, was prima funktioniert).
Was ich noch vermisse sind die Daten aus dem Info Tab (Brennerstarts, Betriebsstunden...)
Ich habe auch schon versucht die API calls in der Andrioid APK Datei zu finden. Aber das einzige was da als /info zu finden war ist:
v1.0/resources/user/{UserId}/nxg/facility/{FacilityId}/info
Und das liefert mir nur einen 404 Not Found Fehler. -
@borax
.....com/connect/v1.0/resources/service/user/USERID/facility/FACID/info.com/connect/v1.0/resources/service/user/USERID/facility
.com/aks/connect/v1.0/resources/service/user/USERID/facility/FACID/picture
-
Wow ging das schnell!
Funktioniert bestens.
1024 Dank!Darf ich fragen wie du das raus bekommen hast?
-
@borax Einfach schauen was die App abruft.
Ich habe es mal in den Adapter eingebaut aber ungetestet ob die infos angezeigt werden -
@tombox said in Test Fröling Connect v0.0.x:
Einfach schauen was die App abruft.
Hast du die App irgendwie decompiliert? Weil aus dem 'rohen' Text bin ich nicht schlau geworden...
-
@borax zB mit Fiddler kannst du die App Kommunikation umleiten und auslesen. So kommt man dann am einfachsten an die API Endpunkte
-
@tombox hi, könntest du mir bitte eine URl posten wo ich zugriff auf die API über den Browser bekomme und was die USERID und FaceID bedeuten, danke wäre super nett. Ansonsten danke für den Adapter, läuft bisher perfekt.
Die URL hätte ich jetzt, aber ich bekomme den "security check failed" Fehler.
-
@babl Über den Browser geht das eigentlich nicht, weil du dich erst einloggen musst und dann immer den login token mitsenden musst
-
@tombox aaah ok, danke ich wollte nur für jemanden die vollastdauer auslesen, mehr wollte er eigentlich nicht. Ansonsten reicht ihm Die APP von Fröling.
-
Hallo Zusammen!
Kann mir jemand ein Bespiel dafür geben, wie ich meinen Kessel in blockly ein und ausschalten kann?
Ich kapiere das mit setValue nicht.
Pfad wäre dieser hier.froeling.0.2411.details.Kessel.kesselEinAus-9887.parameter
Dankeschön!
VG
Thomas -
kopier dir das script mal.
<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="-9Phw`kO9+8f^hB=8RV9" x="37" y="88"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">true</field> <field name="ACK_CONDITION">false</field> <value name="OID0"> <shadow type="field_oid" id="}Eo5+u.vk8BsFkTD_[c("> <field name="oid">0_userdata.0.Heizung.Sommerbetrieb</field> </shadow> </value> <statement name="STATEMENT"> <block type="controls_if" id="^MukocRWUDu=I}IK|%Fj"> <value name="IF0"> <block type="logic_compare" id="9s`J4yT}rQ4ulMBg5sC*"> <field name="OP">EQ</field> <value name="A"> <block type="get_value" id="dQXsoP}@GCq:f9]2$PA+"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Heizung.Sommerbetrieb</field> </block> </value> <value name="B"> <block type="logic_boolean" id="g9L8ROyo,Y?3EqjW[/EK"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control" id="94H*.ES}4w8s*AqR`u+m"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.scriptEnabled.common.Heizung.Sommerbetrieb.Heizstab</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="AEGPB@LYI(t2[iRfiCBk"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="control" id="!bZw$(Zu%LZG%=#0co$r"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Heizung.Winterbetrieb</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="wj28oTuK;R^#QeY6YF~R"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="v63-]cM(t~jSOxsh`}ng"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">froeling.0.46035.details.Kessel.betriebsArtKessel-9963.parameter.setValue</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="IMR%NP77(RMAiNG:{eZ!"> <field name="NUM">1</field> </block> </value> <next> <block type="control" id="P*NH@_Wguykyni.C{5?u"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">froeling.0.46035.details.Kessel.kesselEinAus-9887.parameter.setValue</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="xLWkgAO;v{$`/ysNm*#3"> <field name="NUM">0</field> </block> </value> <next> <block type="control" id="WQpA.l{NZNsDCL=8~A(:"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">javascript.0.scriptEnabled.common.Heizung.Pelletsbeladung</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="hCuOPFdCA-Xy`yVxNM(g"> <field name="BOOL">TRUE</field> </block> </value> </block> </next> </block> </next> </block> </next> </block> </next> </block> </statement> </block> </statement> </block>
-
@babl
Danke für die Hilfe.
Irgendwas passt aber nicht.Skriptblock:
<block xmlns="https://developers.google.com/blockly/xml" type="control" id="P*NH@_Wguykyni.C{5?u" x="109" y="800"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">froeling.0.2411.details.Kessel.kesselEinAus-9887.parameter.setValue</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="math_number" id="xLWkgAO;v{$`/ysNm*#3"> <field name="NUM">1</field> </block> </value> </block>
Bringt die Fehlermeldung:
javascript.0
2022-10-23 22:55:00.011 warn at processTimers (internal/timers.js:497:7)javascript.0
2022-10-23 22:55:00.010 warn at listOnTimeout (internal/timers.js:554:17)javascript.0
2022-10-23 22:55:00.010 warn at Timeout._onTimeout (/opt/iobroker/node_modules/node-schedule/lib/Invocation.js:228:7)javascript.0
2022-10-23 22:55:00.010 warn at /opt/iobroker/node_modules/node-schedule/lib/Invocation.js:268:28javascript.0
2022-10-23 22:55:00.010 warn at Job.invoke (/opt/iobroker/node_modules/node-schedule/lib/Job.js:168:15)javascript.0
2022-10-23 22:55:00.010 warn at Job.job (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1313:34)javascript.0
2022-10-23 22:55:00.010 warn at Object.<anonymous> (script.js.Heizung.Heizung-Ein-Aus-Manuel:2:3)javascript.0
2022-10-23 22:55:00.009 warn at setState (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1439:20)javascript.0
2022-10-23 22:55:00.005 warn State "froeling.0.2411.details.Kessel.kesselEinAus-9887.parameter.setValue" not foundFolgenden Pfad habe ich direkt aus dem Objekt-Editor raus kopiert:
froeling.0.2411.details.Kessel.kesselEinAus-9887.parameter
Sollte eingetlich passen, oder?
-
@thommy99 normal schon, bei mir läuft das script einbahnfrei. Kann vielleicht sein, weil die Datenpunkte nicht zusammenpassen, da ich ja auch Scripte automatisch stoppe. Aber ich hoffe der Datenpunkt hilft dir weiter.
-
Mit der Version 0.0.6 des Adapters existiert nur auf der Wert "setValue".
Den gab es vorher nicht. Funktioniert jetzt einwandfrei.
Dankeschön! -
@gr sagte in Test Fröling Connect v0.0.x:
@strobelix Hab den Fehler gefunden. Ich hatte einfach den falschen Datenpunkt benutzt. Jetzt habe ich es richtig eingestellt und es funktioniert ohne Probleme.
Hallo, es hat sich herausgestellt, daß das Schalten zwischen Absenken und Auto nichts spart, denn wenn die Heizung von Absenkbetrieb in den Autobetrieb schaltet, dann springt sie auch gleich an.
Deshalb bin ich immer noch auf der Suche nach einer Lösung:
Bei mir läuft ein Skript, das die Heizkörperventile ausliest. Wenn eins davon Wärme braucht, dann soll die HK-Pumpe eingeschaltet werden.So sieht mein Blockly aus:
DerbDatenpunkt ist der hier:
froeling.0.34xxx.details.Heizung.pumpeAktiv-0.parameter.setValue
Leider kommt jetzt folgende Fehlermeldung:
froeling.0 2022-11-03 15:30:39.958 error "" froeling.0 2022-11-03 15:30:39.953 error AxiosError: Request failed with status code 403
Gibts da eine Lösung?
-
Sorry - aber ich schaffe es nicht die Heizkreise im Blocky zu schalten.
Ich hätte verstanden, daß man in den setValue Datenpunkte den Wert eintragen muß.
Verwendet man den Text oder die Variable.
Als Beispiel, um den Heizkreis auszuschalten "AUS" oder 0 bzw. wieder auf Automatik zu stellen "Auto" oder 1?