Ich benutze immer den "Cron Generator" in der iobroker GUI - kann ich dir nur empfehlen!
NEWS
Best posts made by massa
-
RE: Ich hab den Cronjob noch nie begriffen
Latest posts made by massa
-
RE: JS request Modul installieren
Werde es morgen mal austesten! Node-ssh hatte zumindest nicht mehr funktioniert, aber das request Modul würde mir theoretisch auch reichen!
Besten Dank schon mal -
RE: JS request Modul installieren
Ich habe nur das node-ssh Modul in den Settings angegeben!
Das seltsame ist ja, dass erst alles normal funktioniert hat und jetzt findet er nicht mal das inkludierte request Modul...
-
RE: JS request Modul installieren
Habe Version 4.3.3 installiert!
Raspberry:
-
RE: JS request Modul installieren
Ich habe ganz plötzlich das gleiche Problem... Hat jemand eine Lösung für das Problem gefunden?
Ich hatte letzte Woche das node-ssh Modul zusätzlich eingebunden was auch erst funktionierte. Aber ein Tag später hat er das Modul nicht mehr gefunden, obwohl vorhanden! Habe keine Änderungen vorgenommen...
Das request Modul findet er auch nicht mehr.Hat da jemand eine Idee?
-
HM Thermostat mit externem Temperatursensor peeren
Hallo zusammen,
ich habe gerade meinen Aqara Temperatursensor im ioBroker in Betrieb genommen.
Nun würde ich diesen gerne irgendwie mit meinem Homematic Thermostat im selben Raum verbinden, da dieses extrem ungenau ist und die Heizungssteuerung schwierig macht..
Ich habe eine Anleitung für FHEM gefunden, gibt es das in der Form auch für den ioBroker?
https://hilftdirweiter.de/fhem-homematic-heizkoerperthermostat-mit-externem-temperatursensor-peeren/Besten Dank!
-
RE: Hash Methode aus Java in Javascript übersetzen
@AlCalzone wen haben wir denn da
Vielen Dank!!
Ich habe die letzten Tage mit diesem Rätsel verbracht und war schon echt am verzweifeln... So klappt es!
Dann kann es ja weitergehen -
Hash Methode aus Java in Javascript übersetzen
Hallo zusammen,
ich arbeite gerade an einem aktualisierten myAudi Adapter. Ich stehe nun vor der Herausforderung drei Java Methode (aus der myAudi APK extrahiert) in Javascript zu übersetzen, um diese für den iobroker zu nutzen! Folgende zwei Methoden habe ich bereits gefunden:
JAVA Original Methoden:
static byte[] hexToBytes( String str) { byte[] bArr = new byte[(str.length() / 2)]; int i = 0; while (i < str.length()) { int i2 = i + 2; bArr[i / 2] = (byte) Integer.parseInt(str.substring(i, i2), 16); i = i2; } return bArr; } static String bytesToHex( byte[] bArr) { char[] cArr = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; char[] cArr2 = new char[(bArr.length * 2)]; for (int i = 0; i < bArr.length; i++) { int b = bArr[i] & 255; //byte int i2 = i * 2; cArr2[i2] = cArr[b >>> 4]; cArr2[i2 + 1] = cArr[b & 15]; } return new String(cArr2); }
Javascript Übersetzung:
function hexToBytes(hex) { for (var bytes = [], c = 0; c < hex.length; c += 2){ bytes.push(parseInt(hex.substr(c, 2), 16)); } adapter.log.info(bytes); return bytes; } // Convert a byte array to a hex string function bytesToHex(bytes) { for (var hex = [], i = 0; i < bytes.length; i++) { var current = bytes[i] < 0 ? bytes[i] + 256 : bytes[i]; hex.push((current >>> 4).toString(16)); hex.push((current & 0xF).toString(16)); } return hex.join(""); }
Mein eigentliches Problem besteht nun darin, dass ich in der Hash Methode nie auf das richtige Ergebnis komme, da Javascript mit den Typen und Hashing anders umgeht als Java. So sieht die Hash Methode in Java aus:
static String hashPinV2( String str, String str2) { try { byte[] hexToBytes = hexToBytes(str); byte[] hexToBytes2 = hexToBytes(str2); byte[] bArr = new byte[(hexToBytes.length + hexToBytes2.length)]; System.arraycopy(hexToBytes, 0, bArr, 0, hexToBytes.length); System.arraycopy(hexToBytes2, 0, bArr, hexToBytes.length, hexToBytes2.length); return bytesToHex(MessageDigest.getInstance("SHA-512").digest(bArr)); } catch (Exception e) { System.err.println("ERROR"); } return "1"; }
Hat jemand einen Tipp was genau ich tun muss, um das in Javascript umzusetzen? Ich habe schon eine ganze Menge ausprobiert, aber komme einfach nicht weiter... Übrigens ist es natürlich nicht wichtig genau die gleichen Methodne zu benutzen. Also wenn jemand einen anderen Weg kennt und auf das gleiche Ergebnis kommt ist das genauso gut
Folgende Test-Werte benutze ich:
hashPinV2(Test-Pin,Test-Challenge)
Test-Pin: 3364
Test-Challenge: 3680E2E102C45655318BE5660D6E43DE7D7CA8FA733BFE983FC071BE5A7B5321Richtiger Ziel-Hash: DE11152A24ECD60104455FA1DC6F5D7A69BB7388B562BF2B2C22C2921B5DF9944F56563C57014FDD8F86670D7499CEB2F7682892528810874CC776112585960C
-
RE: Ich hab den Cronjob noch nie begriffen
Ich benutze immer den "Cron Generator" in der iobroker GUI - kann ich dir nur empfehlen!
-
RE: Zeitspanne, Trigger und if Abfrage
Ahhhh jetzt habe ich verstanden wie man es machen muss. Vielen Dank für deine Hilfe!
-
Zeitspanne, Trigger und if Abfrage
Hallo zusammen,
ich spiele nun schon eine ganze Weile mit dem iobroker und habe auch einige Skripte implementiert.
Nun haben sich mit der Zeit einige Fragen bei mir aufgetan auf die ich keine Antwort finde:
1. Wie bzw. nach welchen Regeln verarbeitet Iobroker ein Skript, wenn z.B. ein Trigger (.on) innerhalb einer if-Abfrage bzw, einem anderen Trigger steht, also z.B.
.on(Anwesenheitstatus ändert sich) if(anwesenehit=wahr){ .on(Tür öffnet sich) Schalte das Licht im Flur ein
2. Wie kann ich eine Zeitspanne festlegen, sodass wenn ich nach hause komme und meine Anwesenheit wahr ist und sich dann innerhalb von 10 Minuten der Status des Türsensors ändert das Licht im Flur angeht und sich nach 3 Minuten wieder ausschaltet? Natürlich darf das Licht nur angehen, wenn die isAstroDay Funktion false ist. Folgendes ist mein Ansatz, welcher aber nicht funktioniert, da wie es aussieht direkt in die Trigger gesprungen wird, ohne dass vorherige Bedingungen abgefragt werden:
on({id: "cloud.0.services.ifttt"/*IFTTT value*/, change: "ne"}, function (obj) { if(getState("cloud.0.services.ifttt").val == 'person1_abwesend' && getState("cloud.1.services.ifttt").val == 'person2_abwesend'){ setState("hm-rega.0.950"/*Anwesenheit_HM*/, false); setState("hm-rpc.0.XXX.1.STATE"/*HM-LC-Sw1PBU-FM XXX:1.STATE*/, false); setState("hm-rpc.0.XXX.1.LEVEL"/*HM-LC-Dim1TPBU-FM XXX:1.LEVEL*/, 0); } else{ setState("hm-rega.0.950"/*Anwesend*/, true); on({id: "hm-rpc.0.XXX.1.STATE"/*HM-Sec-SCo XXX:1.STATE*/, change: "ne"}, function (obj) { if(isAstroDay()===false){ setState("hm-rpc.0.XXX.1.STATE"/*HM-LC-Sw1PBU-FM XXX:1.STATE*/, true); timeout = setTimeout(function () { setState("hm-rpc.0.XXX.1.STATE"/*HM-LC-Sw1PBU-FM XXX:1.STATE*/, false); }, 180000); } }); } });
Vielen Dank für eure Hilfe