@kruemelmonster Ich mache es mit den vis-material-advanced - ListWindowShutter.
Die haben nur ein Nachteil. Das Bild für komplett geöffnet fehlt und damit zeigt er bei geöffnetem Rolladen ein fehlendes Bild an. Rückmeldung hier im Forum ob das Bild nachinstalliert werden kann war, dass das nur der Ersteller der Komponenten kann
NEWS

Best posts made by Norwegen60
-
RE: Test Adapter bshb (Bosch Smart Home) v0.0.x
Latest posts made by Norwegen60
-
RE: Ansteuerung einer Balboa Poolsteuerung
@michihorn Eigentlich hatte ich ja schon in der Fritzbox geschaut. Ich habe den Pool ausgeschalten und gemeint, dass ja eine Verbindung weg fallen sollte. Tat sie aber nicht.
Nachdem dein Screen beim Pool nicht WLAN sondern LAN anzeigt hat, habe ich es noch mal probiert und mir das gesamte Netzwerk angeschaut. Zum Glück habe ich diesmal auch länger gewartet und nach ca. 90s war auch eine Verbindung weg. Nämlich die hier.
Korrekte IP in der Konfigurationsdatei eingetragen (Änderung im Hombdrige Tab hat nicht gereicht)
Und danach waren die Eigenschaften in HAM-Object zu sehen
Jetzt werde ich mal schauen, wie zuverlässig das Object arbeitet.
Hier eine Zusammenfassung der letztlich erforderlichen Schritte- Balboa so einrichten, dass mit der Balboa-App "Local Connect" funktioniert. (Das war bei mir ein Gefrickel da Verbindung immer wieder abbrach obwohl ich direkt neben dem Pool saß. Letztlich habe ich sogar die Verblendung am Pool abgenommen.)
- Danach IP des Balboa emitteln
- In ioBroker Hombridge-Adapter (HAM) installieren
- In der HAM-Instanz folgende Angaben eingeben
- Und in der Konfigurationsdatei das
Eigentlich sollte das Einrichten des Balboa-Moduls auch über den Hombridge-Tabulator möglich sein, aber das hat bei mir ziemlich gehakelt.
Danach sollten in den Objekten die Eigenschaften des Pool verfügbar sein
-
RE: Ansteuerung einer Balboa Poolsteuerung
Nach mehr als eine Jahr Pause, das Ding hat mich genervt (ich habe die alte Version 1), habe ich jetzt einen neuen Versuch gestartet den Balboa an ioBroker anzubinden. Nach gefühlt unendlichen Versuchen läuft jetzt die Balboa-App einigermaßen stabil. Mir gings wie anderen. Ich saß direkt neben dem Pool und trotzdem gabs immer wieder Verbindings-Abbrüche. Auch jetzt kommt manchmal eine Latency-Meldung.
Grundsätzlich kann ich aber mit "Local Connect" auf die Poolsteuerung zugreifen
Dann habe ich den HAM-Adapter installiert. Auch ein gefrickle, denn auf dem Homebridge Tabulatore wurde nur graue Felder angezeigt wenn ich nach balboa gesucht habe
Nach diesem Eintrag direkt in der Instanz
wurde Treiber im Tab dann als installiert angezeigt
Iregendwo hatte ich geshen, dass wenn die IP leer bleibt, diese automatisch gesucht wird. Ich sehe aber bei den Objecten nur den HAM order. Der aber ist leer
Was mach ich falsch bzw. wie komme ich an die IP. Seit der Pool per APP connected ist, taucht er in der Netzwerkliste nicht mehr auf. Auch nicht in der FritzBoxPS: Paralle bin ich auch mit der Steuerung per Shelly weiter. Die Temperatursensoren sind aber keine PT100. Bei den Balboa-Sensoren sinkt der Widerstand mit steigender Temperatur. Wenn ich aber über beide Sensoren je ein 38kOhm Widerstand lege, zeigt die Anzeige statt 10° 35° an und so kann ich ihm vorgaukeln, dass die Temperatur erreicht ist. Wenn er wirklich heizen soll (genug Sonne von der Solar da), könnte ich dann die Parallewiderstände abhängen und er heizt normal. Und wenn die 10° unterschritten werden, würde er auch heizen. Frostgefahr ist also auch gewährt. Wenn ich jetzt noch einen Ort finde, in dem ich einen Shelly-Temp-Fühler ins Wasser hängen kann, habe ich sogar immer die Temperatur. Nicht nur, wenn er im Heizmode ist.
-
RE: (gelöst) SQL Abfrage als Function in einem javascript
OK, ich habe es selbst herausbekommen. Die Hürden waren
- nicht genau zu wissen, wie bei JavaScript function und deren Parameter funktionieren
- die Erkenntnis, dass bei SQL die Ergebnisse zeitverzögert zurück kommen. Wenn man in der Function das Ergebnis als result zurück gegeben hat, hat der Wert im Log nie gestimmt. Die Suche warum die Werte nie gestimmt haben, hat einiges an Zeit verschlungen
Ich habe es deshalb wie folgt realisiert. Der Einfacheit halber verwende ich die Funktion um Jahresergebnisse zu liefern. Da muss nicht Jahr/Monat verschlüsselt werden (Monatsabfrage steht ja schon im vorigen Post)
function GetEnergyYear(ID, Year, DataPoint, DataPointCurrent = '') { let ValueCurrent = 0; let sSQL1 = 'use ioBroker DECLARE @ID int = ' +String(ID) +', @Year int ='+String(Year); let sSQL2 = 'select max(val) from ts_number where ((id = @ID) and (year(DATEADD(s, ts/1000, \'1970-01-01\')) = year(getdate())-@Year-1)) or (id = 0)'; let sSQL =sSQL1 + ' select max(val) -(' + sSQL2 +') from ts_number where ((id = @ID) and (year(DATEADD(s, ts/1000, \'1970-01-01\')) = year(getdate())-@Year)) or (id = 0)'; sendTo('sql.0', 'query', sSQL, async (result) =>{ setState(DataPoint , getAttr((getAttr(result, 'result')[0]), ''), true); }); // Wenn Korrekturwert (aktueller Tages-Wert) mit übergeben wurde, diesen zum Wert addieren // Hier muss man wissen, dass immer nur der Endwert eines jeden Tages abliegt. // Der Stand des aktuellen Tages fehlt also. Der kann per DataPointCurrent übergeben und hinzuaddiert werden if (String(DataPointCurrent) != '') { ValueCurrent = getState(DataPointCurrent).val; if (Logging) {console.log('###2: ValueCurrent = ' + String(ValueCurrent))}; setState(DataPoint /* rEnergyRateDay */, (getState(DataPoint).val + ValueCurrent), true); }; if (Logging) {console.log('###2: '+ String(DataPoint) + ' = ' + String(getState(DataPoint).val))}; } // ############################################################################################################################# // alle 2 Minute aktuelle Monatsverbräuche berechnen schedule('{"time":{"start":"00:00","end":"24:00","interval":2,"mode":"minutes"},"period":{"days":1}}', async () => { console.log(('### Verbrauch aktueller Monat ###')); // Und so erfolgt die Abfrage. 88 und 100 sind die Datapoint ID des Tagesendwertes GetEnergyYear(88,0,'0_userdata.0.PV.rPV_Energy_RateYear','0_userdata.0.PV.rPV_Energy_Day'); GetEnergyYear(88,1,'0_userdata.0.PV.rPV_Energy_RateYearBefore'); // der benötigt keine Korrektur da ja alle Tage abgelegt sind GetEnergyYear(100,0,'0_userdata.0.PV.rUsed_Energy_RateYear','0_userdata.0.PV.rUsed_Energy_Day'); GetEnergyYear(100,1,'0_userdata.0.PV.rUsed_Energy_RateYearBefore'); });
Kann sein, dass es einfacher geht, aber so funktioniert es
Grüße
Gerd -
RE: Test Adapter bshb (Bosch Smart Home) v0.0.x
@kruemelmonster Ich mache es mit den vis-material-advanced - ListWindowShutter.
Die haben nur ein Nachteil. Das Bild für komplett geöffnet fehlt und damit zeigt er bei geöffnetem Rolladen ein fehlendes Bild an. Rückmeldung hier im Forum ob das Bild nachinstalliert werden kann war, dass das nur der Ersteller der Komponenten kann
-
(gelöst) SQL Abfrage als Function in einem javascript
Hallo zusammen,
ich sammle für verschiedene Datenpunkte immer um Mitternacht die aktuellen Zählerständ
Mit folgendem Script kann ich mir dann z.B. den Verbrauch des letzten Monats berechnen und anzeigen lassen
sendTo('sql.0', 'query', 'use ioBroker DECLARE @ID int = 63, @Month int = 2 select max(val) -(select max(val) from ts_number where ((id = @ID) and (year(DATEADD(s, ts/1000, \'1970-01-01\'))*12+month(DATEADD(s, ts/1000, \'1970-01-01\')) = year(getdate())*12+month(getdate())-@Month)) or (id = 0)) from ts_number where ((id = @ID) and (year(DATEADD(s, ts/1000, \'1970-01-01\'))*12+month(DATEADD(s, ts/1000, \'1970-01-01\')) = year(getdate())*12+month(getdate())-@Month+1)) or (id = 0)', async (result) => { setState('0_userdata.0.Power.Pool.rEnergyRateMonthBefore' /* rEnergyRateMonth */, getAttr((getAttr(result, 'result')[0]), ''), true); }); console.log(('Pool.rEnergyRateMonthBefore = ' + String(getState('0_userdata.0.Power.Pool.rEnergyRateMonthBefore').val)));
Dieses lange SQL ist nur schwer les- und pflegbar. Ich benötige es aber x mal (1x für jeden Datenpunkt und dann nochmal zur Berechnung des Vormonats, ...). Gibt es eine Möglichkeit, das SQL mit den Variablen @ID, @Month in irgendeiner Weise per Java-Funktion zusammenzustellen oder ausführen zu lassen.
In MsSQL könnte das folgenderweise aussehen
DECLARE @ID int = 59, @Month int = 1 select max(val) -( select max(val) from ts_number where ((id = @ID) and (year(DATEADD(s, ts/1000, '1970-01-01'))*12+month(DATEADD(s, ts/1000, '1970-01-01')) = year(getdate())*12+month(getdate())-@Month)) or (id = 0)) from ts_number where ((id = @ID) and (year(DATEADD(s, ts/1000, '1970-01-01'))*12+month(DATEADD(s, ts/1000, '1970-01-01')) = year(getdate())*12+month(getdate())-@Month+1)) or (id = 0)
d.h über die Variable @ID lege ich fest, welcher Datenpunkt berechnet werden soll und über @Month welcher Monat (1=aktueller Monat, 2 = Vormonat, ...)
-
RE: (gelöst) SQL per Blockly, Ergebnis einem Datenpunkt zuordnen
@paul53 So, mit leichter Verzögerung das Feedback. Es hat geklappt. Hier das gesamte Blockly mit einigen Debugs. result und liste sind dabei Variablen (für etwaige Anfänger wie mich, die zuerst mal suchen, wo denn result her kommt
Und hier das optimierte Blockly
Vielen dank noch
-
RE: (gelöst) SQL per Blockly, Ergebnis einem Datenpunkt zuordnen
@paul53 Ich komme leider nicht weiter. Da ich den "Attribut vom Object" noch nicht kenne, habe ich versucht den Vorschlag zu zerlegen und muss feststellen, dass schon der "JSON nach Objekt" nicht das liefert, was ich erwartet hätte.
Was mach ich falsch? -
(gelöst) SQL per Blockly, Ergebnis einem Datenpunkt zuordnen
Ich habe folgende SQL-Abfrage erstellt und bekomme wie gewünscht einen einzelnen Wert als Antwort.
Jetzt hänge ich aber daran, diese Zahl 27.6747 einem Datenpunkt zuzuordnen. -
RE: NOUS Steckdose vergisst total gemessenen Stromverbrauch
@paul53 Jetzt ist doch noch mal eine Frage aufgetaucht.
Wozu wird die Variable "kWh" benötigt. Ich habe es mal so ausprobiert, incl. ausstecken des Shelly PlugS und damit Start von 0 und es hat funktioniert -
RE: NOUS Steckdose vergisst total gemessenen Stromverbrauch
@paul53 said in NOUS Steckdose vergisst total gemessenen Stromverbrauch:
Nein, Datenpunkt-Zustände werden regelmäßig in einer Datei gespeichert, die bei Start von ioBroker eingelesen wird
Das ist eine sehr hilfreiche Information. Danke.