Prost Neujahr 2023! Jemand Interesse daran?
Link: github.com/jolichter/ioBroker_sendSMS77
NEWS

Best posts made by jolic
-
JavaScript: SMS per sms77.io versenden
-
RE: FritzBox WLAN Passwort ändern
Hallo, nach über zwei Jahren habe ich mich nochmal mit dem Thema beschäftigt, einige Optimierungen vorgenommen und den nervigen Fehler endlich behoben. Vielleicht ist das ja auch für jemand anderen nützlich. Viel Spaß damit!
Danke an das Team von ioBroker und einen guten Rutsch ins neue Jahr!
// QR-Image V24.12.008 -> ein paar Optimierungen und ein lästiger Fehler behoben. // Nach jedem Neustart des TR-064 Adapter und ersten Start des Skripts war der DP "wlanGuestPassword" leer. // Der Fehler war ein Timing-Problem. Das Passwort wurde gesetzt, aber der TR-064 Adapter verarbeitete es zu langsam. // Durch den setState-Callback wird sichergestellt, dass der QR-Code erst nach erfolgreichem Speichern des Passworts generiert wird. // // Quelle: // https://www.npmjs.com/package/qr-image // https://forum.iobroker.net/topic/4574/fritzbox-wlan-passwort-%C3%A4ndern/49 // Das Modul 'qr-image' muss in den JS Adapter (Instanzen) eingetragen werden! // // Der ioBroker TR-064 Adapter bietet keine Möglichkeit, die Verschlüsselungsmethode des Gast-WLANs (z. B. "WPA2" oder "WPA2 + WPA3") zu ändern. // Die Konfiguration der Verschlüsselung erfolgt über die Weboberfläche der FRITZ!Box. var MySSID = "HalloGast"; // SSID Name var MyVisibility = "n"; // Hidden SSID? var cronStr = "1 4 * * *"; // Script wird jeden Tag um 04:01 ausgeführt // var cronStr = "1 4 * * 1"; // Einmal je Woche um 04:01 | 1 = Montag (0 = Sonntag, 6 = Samstag) // var cronStr = "1 4 1 * *"; // Am 1. Tag jedes Monats um 04:01 var idQRZiel = "javascript.0.QR-Code.Gast"; // Zieldatenpunkt für QR-Code var IdGPasswd = "tr-064.0.states.wlanGuestPassword"; // Datenpunkt für WLAN-Gastpasswort var passwordLength = 20; // Länge des Passworts (mind. 8 Zeichen!) if (MyVisibility === "y") { var MyHidden = "H:true"; } else { MyHidden = ""; } // Erstelle den Datenpunkt für den QR-Code, falls nicht vorhanden createState(idQRZiel, "", { name: 'QR-Code für Gastpasswort', desc: 'QR-Code für Gastpasswort', type: 'string', role: 'value' }); // Methode zur Erstellung eines zufälligen Passworts (keine Sonderzeichen am Anfang oder Ende) function randomString(length) { var result = ''; var lowerChars = 'abcdefghijklmnopqrstuvwxyz'; var upperChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; var digits = '0123456789'; var specialChars = '!?._-'; var allChars = lowerChars + upperChars + digits + specialChars; // Ersten und letzten Charakter setzen (keine Sonderzeichen) result += lowerChars.charAt(Math.floor(Math.random() * lowerChars.length)); // Kleinbuchstabe am Anfang // Mittelteil auffüllen (inkl. Sonderzeichen) for (var i = 1; i < length - 1; i++) { var char = allChars.charAt(Math.floor(Math.random() * allChars.length)); result += char; } // Letztes Zeichen (keine Sonderzeichen, aber Klein-/Großbuchstabe oder Zahl) result += lowerChars.concat(upperChars, digits).charAt(Math.floor(Math.random() * (lowerChars.length + upperChars.length + digits.length))); // Stelle sicher, dass mindestens ein Sonderzeichen enthalten ist (außer am Anfang und Ende) var specialIndex = Math.floor(Math.random() * (length - 2)) + 1; // Position zwischen 1 und length-2 var specialChar = specialChars.charAt(Math.floor(Math.random() * specialChars.length)); result = result.substring(0, specialIndex) + specialChar + result.substring(specialIndex + 1); return result; } // Methode zur Erstellung des QR-Codes var qr; try { qr = require('qr-image'); } catch (err) { log('Modul qr-image konnte nicht geladen werden: ' + err); } function createQRcode() { if (!qr) return; // Abbrechen, falls qr-image nicht geladen werden konnte var NewPasswd = randomString(passwordLength); // Passwortlänge dynamisch anpassbar setState(IdGPasswd, NewPasswd, false, function(err) { if (err) { log('Fehler beim Setzen des Passworts: ' + err); } else { setTimeout(function() { setState(IdGPasswd, NewPasswd, true); // Nach 2 Sekunden bestätigen }, 2000); var svg_string = qr.imageSync('WIFI:S:' + MySSID + ';T:WPA2;P:' + NewPasswd + ';' + MyHidden + ';', { type: 'svg' }); setState(idQRZiel, svg_string, true); } }); } // Erstelle den QR-Code einmalig beim ersten Start des Scripts createQRcode(); // Planmäßige Wiederholungen der Erstellung des QR-Codes schedule(cronStr, createQRcode);
-
Anwesenheitserkennung TR-064 ab iOS14
Hi, zur Info wenn jemand iOS 14 mit dem TR-064 Adapter und Devices z.B. zur Anwesenheitserkennung nutzt.
Seit iOS 14 generiert Apple standardmässig bei WLAN-Nutzung eine zufällige MAC-Adresse um ein Tracking zu erschweren.
Halte das für eine gute Idee, jedoch ist das daheim nicht notwendig und die Anwesenheitserkennung funktioniert damit nicht. Im öffentlichen WLAN ist das sinnvoll, aber daheim (privat) wohl kaum.Lösung: In der WLAN Einstellung kann für jeden Zugang die "Private WLAN-Adresse" deaktiviert werden und die MAC-Adresse bleibt statisch.
PS: Firmennetzwerke prüfen als zusätzliche Sicherheit auch gerne die MAC-Adresse.
-
RE: [DEPRECATED] Abkündigung Adapter ioBroker.info
Hi, angesichts der Tatsache, dass es schon seit längerem keine neuen Updates mehr für den RPi-Monitor (rpi2) gibt und dieser ausschließlich für Debian konzipiert wurde, setze ich auf ein kleines JavaScript. Dieses Skript überwacht kontinuierlich die CPU-Temperatur und die Laufzeit meines Raspberry Pi-Systems und speichert diese Daten regelmäßig in ioBroker-Datenpunkten ab. Wer zusätzliche Informationen benötigt, kann diese Basis gerne als Ausgangspunkt nehmen und sie nach Bedarf erweitern.
Vielleicht gibt es jemanden, der eine bessere Lösung oder Idee für diesen Code hat? Bei mir läuft er jedenfalls ohne Probleme.
// V23.12.002 // Linux Pi-System Monitor // // Das Skript überwacht die CPU-Temperatur und die Uptime eines Raspberry Pi-Systems, // und speichert diese Informationen regelmäßig in ioBroker-Datenpunkten, // wobei die Temperatur auf eine Stelle und die Uptime auf zwei Stellen hinter dem Komma begrenzt wird. var exec = require("child_process").exec; // Pfad für die Datenpunkte var dataPath = "javascript.0.linux-pi-system"; // Funktion zur Aktualisierung eines Zustands, falls vorhanden, oder zur Erstellung eines neuen Zustands function updateOrCreateState(path, value, callback) { getObject(path, function (err, obj) { if (!err && obj) { // Der Zustand existiert bereits, aktualisiere ihn setState(path, value, true, callback); } else { // Zustand erstellen createState(path, value, true, callback); } }); } // Funktion zur Speicherung der CPU-Temperatur function saveCPUTemperature() { exec("cat /sys/class/thermal/thermal_zone0/temp", function (error, stdout, stderr) { if (!error) { // Umrechnung in Grad Celsius mit einer Stelle hinter dem Komma begrenzt var millikelvin = parseFloat(stdout.trim()); var celsius = (millikelvin / 1000).toFixed(1); // Speichern des Wertes in ioBroker updateOrCreateState(dataPath + ".temperature", celsius, function () {}); } else { log("Fehler beim Abrufen der CPU-Temperatur: " + error); } }); } // Funktion zur Umrechnung der Uptime in Stunden und Speicherung function saveUptime() { exec("cat /proc/uptime", function (error, stdout, stderr) { if (!error) { // Zerlegen des stdout-Strings und Umwandlung der ersten Zahl in Stunden var uptimeInSeconds = parseFloat(stdout.split(' ')[0]); var uptimeInHours = (uptimeInSeconds / 3600).toFixed(2); // Speichern des umgerechneten Wertes in ioBroker updateOrCreateState(dataPath + ".uptime", uptimeInHours, function () {}); } else { log("Fehler beim Abrufen der Uptime: " + error); } }); } // Initialer Aufruf der Funktionen saveCPUTemperature(); saveUptime(); // Zeitplan für die regelmäßige Ausführung schedule("*/5 * * * *", saveCPUTemperature); // Alle 5 Minuten die CPU-Temperatur abrufen und speichern schedule("*/10 * * * *", saveUptime); // Alle 10 Minuten die Uptime abrufen und speichern
-
RE: VIS, WEB und Socket , nächstes Problem?!
@haselchen: Hi, kann ich auch bestätigen und nach downgrade ist alles wieder OK.
-
RE: RTSP Stream in VIS anzeigen
@iobroker2001 said in RTSP Stream in VIS anzeigen:
Habe ebenfalls meine Reolink-Kamera versucht, mit dem Basic Image in der VIS2 anzuzeigen.
Die aktuelle stabile Version der VIS-2 (2.9.64) scheint einen Bug zu enthalten. Bitte nutze entweder die ältere VIS oder wende den folgenden Workaround an: Link
-
RE: Shelly Adapter 4.0 - Shelly Firmware 1.8 - Tester gesucht ;)
Hi, seit Shelly Firmware 1.8.3 funktioniert bei mir wieder Timer Auto Off 1 Sekunde
-
RE: RTSP Stream in VIS anzeigen
@iobroker2001 said in RTSP Stream in VIS anzeigen:
Block als JScript erstelle (ist doch die richtige Stelle?)
Nein, ich nutze diesen Code direkt als DOM-Manipulation (z.B. <img> im Widget) im VIS-SKRIPT, nicht als JavaScript-Adapter-Skript.
Hast du in deiner VIS-2 oben rechts die Option "Show attributes" aktiviert? Wenn ja, kannst du die Tabs SEITE, WIDGET, CSS und SCRIPTE sehen. Wechsle in den Tab SCRIPTE und füge dort den Code ein.
PS: Die Updatezeit des jeweiligen Widgets habe ich auf 0 (deaktiviert) gesetzt. Sollte der Bug behoben werden, kannst du die Zeit einfach wieder einstellen und den Code entfernen.
-
RE: Admin v5 jetzt im STABLE!
@homoran: Danke für die Info! ja htop sagte bei mir PID 532 ist User "iobroker" und command "io.admin.0". Nach einem Neustart ist es PID 17083. Daher kann ich in der Suche natürlich nichts finden.
@apollon77: Habe Admin auf Debug geschaltet. Die Fehlermeldung kommt bei jedem neuen Login:
Details:
iobroker.2021-08-07.logPS: sorry, erstes Logfile war falsch
Latest posts made by jolic
-
RE: Error admin0 (783) socket.io [init] No user found in cookies
Hi, kann ich bestätigen, tritt bei mir seit dem letzten AdminRelease v7.6.3 ebenfalls bei jedem Login auf. Scheint aber unkritisch zu sein, alles funktioniert wie gewohnt.
-
RE: TR-064 Adapter u FB FW8.02 Veränderung der Device Erkennung?
Hallo, meine Erkenntnisse zu diesem Thema sind vielleicht nicht direkt eine Lösung, könnten aber helfen, das Problem einzugrenzen.
Ich nutze ebenfalls den TR-064 Adapter mit einer Fritz!Box (aktuell FW 8.02, vorher 8.01) und hatte gelegentlich Probleme mit LAN-Verbindungen. Das ist für AVM eher untypisch und trat bei mir mit keiner Version vor der 8.x auf.
Die LAN-Abbrüche konnte ich wie folgt lösen (Punkt 4): AVM Wissensdatenbank: Häufige Abbrüche der LAN-Verbindung
Das war besonders relevant für mich, da mein ioBroker über LAN verbunden ist.Was die Trägheit des TR-064 Adapters betrifft, kann ich bestätigen, dass es eine gewisse Verzögerung gibt. In meinem Fall bleibt sie jedoch unter einer Minute, was für mich OK ist.
Interessanterweise hatte ich früher eine stärkere Verzögerung und vermutete damals, dass dies an meinen APs lag. Seit ich mein WLAN-Setup optimiert und die Anzahl der APs auf zwei reduziert habe, scheint es deutlich stabiler zu laufen. Falls du ähnliche Probleme hast, könntest du testweise deine APs kurz ausschalten, um zu prüfen, ob sie die Ursache sind.
Generell versuche ich, die Anzahl meiner WLAN-Geräte stark zu minimieren und setze, wo möglich, ausschließlich auf Z-Wave. Auch wenn einige Nutzer problemlos über 50 WLAN-Geräte betreiben, halte ich das z.B. in einem Mehrfamilienhaus für ein mögliches Problem und die Stabilität leidet darunter.
Mit WLAN-basierten Geräten, wie z. B. Shellys, hatte ich bereits Fälle, in denen ein Hardware-Neustart erforderlich war – wenn auch selten. Bei meinen Z-Wave-Geräten ist mir das hingegen bisher nie passiert.
Nachtrag: Falls du iOS-Geräte nutzt, deaktiviere die Option „Private WLAN-Adresse“ - sonst hat der TR-064 Probleme und im Heimnetz ist das ohnehin überflüssig, während es unterwegs eher sinnvoll sein kann.
-
RE: ioBroker mit Razberry2 auf Raspberry 4
@packelend
Nein, auf Manjaro ARM, tut aber nichts zur Sache. Den Serial Port des RaZberry 7 Moduls findest du mit diesem Befehl:ls -l /dev/ttyA*
In meinem Fall ist das "/dev/ttyAMA0", den ich eingetragen habe.
PS: Kannst du den Befehl auf deinem Host, also nicht im Containers ausführen und erhältst du eine Ausgabe?
-
RE: ioBroker mit Razberry2 auf Raspberry 4
@packelend
Hi, leider kann ich dir nicht direkt helfen, da ich Docker nicht nutze. Ich verwende jedoch schon lange den Razberry 2 und mittlerweile auch den Razberry 7 – und bin nach wie vor begeistert von der für mich überlegenen Funktechnik der Z-Wave-Geräte.Wahrscheinlich kann dir ein Docker-Nutzer besser weiterhelfen.
Was ich allerdings weiß: Ein Docker-Container hat keinen direkten Zugriff auf die Hardware des Hosts, einschließlich der seriellen Ports. Du musst den Zugriff explizit durchreichen, damit der Container auf den seriellen Port zugreifen kann.
-
RE: FritzBox WLAN Passwort ändern
Hallo, nach über zwei Jahren habe ich mich nochmal mit dem Thema beschäftigt, einige Optimierungen vorgenommen und den nervigen Fehler endlich behoben. Vielleicht ist das ja auch für jemand anderen nützlich. Viel Spaß damit!
Danke an das Team von ioBroker und einen guten Rutsch ins neue Jahr!
// QR-Image V24.12.008 -> ein paar Optimierungen und ein lästiger Fehler behoben. // Nach jedem Neustart des TR-064 Adapter und ersten Start des Skripts war der DP "wlanGuestPassword" leer. // Der Fehler war ein Timing-Problem. Das Passwort wurde gesetzt, aber der TR-064 Adapter verarbeitete es zu langsam. // Durch den setState-Callback wird sichergestellt, dass der QR-Code erst nach erfolgreichem Speichern des Passworts generiert wird. // // Quelle: // https://www.npmjs.com/package/qr-image // https://forum.iobroker.net/topic/4574/fritzbox-wlan-passwort-%C3%A4ndern/49 // Das Modul 'qr-image' muss in den JS Adapter (Instanzen) eingetragen werden! // // Der ioBroker TR-064 Adapter bietet keine Möglichkeit, die Verschlüsselungsmethode des Gast-WLANs (z. B. "WPA2" oder "WPA2 + WPA3") zu ändern. // Die Konfiguration der Verschlüsselung erfolgt über die Weboberfläche der FRITZ!Box. var MySSID = "HalloGast"; // SSID Name var MyVisibility = "n"; // Hidden SSID? var cronStr = "1 4 * * *"; // Script wird jeden Tag um 04:01 ausgeführt // var cronStr = "1 4 * * 1"; // Einmal je Woche um 04:01 | 1 = Montag (0 = Sonntag, 6 = Samstag) // var cronStr = "1 4 1 * *"; // Am 1. Tag jedes Monats um 04:01 var idQRZiel = "javascript.0.QR-Code.Gast"; // Zieldatenpunkt für QR-Code var IdGPasswd = "tr-064.0.states.wlanGuestPassword"; // Datenpunkt für WLAN-Gastpasswort var passwordLength = 20; // Länge des Passworts (mind. 8 Zeichen!) if (MyVisibility === "y") { var MyHidden = "H:true"; } else { MyHidden = ""; } // Erstelle den Datenpunkt für den QR-Code, falls nicht vorhanden createState(idQRZiel, "", { name: 'QR-Code für Gastpasswort', desc: 'QR-Code für Gastpasswort', type: 'string', role: 'value' }); // Methode zur Erstellung eines zufälligen Passworts (keine Sonderzeichen am Anfang oder Ende) function randomString(length) { var result = ''; var lowerChars = 'abcdefghijklmnopqrstuvwxyz'; var upperChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; var digits = '0123456789'; var specialChars = '!?._-'; var allChars = lowerChars + upperChars + digits + specialChars; // Ersten und letzten Charakter setzen (keine Sonderzeichen) result += lowerChars.charAt(Math.floor(Math.random() * lowerChars.length)); // Kleinbuchstabe am Anfang // Mittelteil auffüllen (inkl. Sonderzeichen) for (var i = 1; i < length - 1; i++) { var char = allChars.charAt(Math.floor(Math.random() * allChars.length)); result += char; } // Letztes Zeichen (keine Sonderzeichen, aber Klein-/Großbuchstabe oder Zahl) result += lowerChars.concat(upperChars, digits).charAt(Math.floor(Math.random() * (lowerChars.length + upperChars.length + digits.length))); // Stelle sicher, dass mindestens ein Sonderzeichen enthalten ist (außer am Anfang und Ende) var specialIndex = Math.floor(Math.random() * (length - 2)) + 1; // Position zwischen 1 und length-2 var specialChar = specialChars.charAt(Math.floor(Math.random() * specialChars.length)); result = result.substring(0, specialIndex) + specialChar + result.substring(specialIndex + 1); return result; } // Methode zur Erstellung des QR-Codes var qr; try { qr = require('qr-image'); } catch (err) { log('Modul qr-image konnte nicht geladen werden: ' + err); } function createQRcode() { if (!qr) return; // Abbrechen, falls qr-image nicht geladen werden konnte var NewPasswd = randomString(passwordLength); // Passwortlänge dynamisch anpassbar setState(IdGPasswd, NewPasswd, false, function(err) { if (err) { log('Fehler beim Setzen des Passworts: ' + err); } else { setTimeout(function() { setState(IdGPasswd, NewPasswd, true); // Nach 2 Sekunden bestätigen }, 2000); var svg_string = qr.imageSync('WIFI:S:' + MySSID + ';T:WPA2;P:' + NewPasswd + ';' + MyHidden + ';', { type: 'svg' }); setState(idQRZiel, svg_string, true); } }); } // Erstelle den QR-Code einmalig beim ersten Start des Scripts createQRcode(); // Planmäßige Wiederholungen der Erstellung des QR-Codes schedule(cronStr, createQRcode);
-
RE: [gelöst] vis-2 Projekt löschen Fehler
@bernd1967 ja, könnte sein, aber bei Windows kann ich nicht helfen.
-
RE: [gelöst] vis-2 Projekt löschen Fehler
@bernd1967 Nein. Kannst du vielleicht etwas mehr zu deiner Konfiguration sagen? Vielleicht finden wir dann schneller eine Lösung und müssen nicht raten.
PS: Die Host-Info aus der Zwischenablage wäre schon mal ein guter Anfang. Falls du möglicherweise an den Rechten etwas verbogen hast, kann es helfen, iob fix auszuführen.
-
RE: RTSP Stream in VIS anzeigen
@iobroker2001 said in RTSP Stream in VIS anzeigen:
Block als JScript erstelle (ist doch die richtige Stelle?)
Nein, ich nutze diesen Code direkt als DOM-Manipulation (z.B. <img> im Widget) im VIS-SKRIPT, nicht als JavaScript-Adapter-Skript.
Hast du in deiner VIS-2 oben rechts die Option "Show attributes" aktiviert? Wenn ja, kannst du die Tabs SEITE, WIDGET, CSS und SCRIPTE sehen. Wechsle in den Tab SCRIPTE und füge dort den Code ein.
PS: Die Updatezeit des jeweiligen Widgets habe ich auf 0 (deaktiviert) gesetzt. Sollte der Bug behoben werden, kannst du die Zeit einfach wieder einstellen und den Code entfernen.
-
RE: RTSP Stream in VIS anzeigen
@kte said in RTSP Stream in VIS anzeigen:
Falls sich jemand fragt, mein Link für die Annke Kamera, nach langer Suche, lautet: http://IP-Adresse/ISAPI/Streaming/channels/101/picture oder ggf. mit Authentifizierung
http://admin:passwort@IP-Adresse/ISAPI/Streaming/channels/101/pictureHi, das kann daran liegen, dass der Annke-Link und das Authentifizierungsformat nicht mit dem Fully Browser kompatibel sind. Teste, ob Annke wie bei Instar auch die Authentifizierung über URL-Parameter wie usr und pwd unterstützt. Der Link könnte dann wie folgt aussehen:
http://IP-Adresse/ISAPI/Streaming/channels/101/picture?usr=NAME&pwd=PASSWORD
Wichtig: Das Passwort wird im Klartext im Link übermittelt. Achte deshalb darauf, dass der Zugriff nur in einem geschützten Netzwerk erfolgt und Unbefugte keinen Zugriff darauf haben. Ich empfehle, dafür keinen Admin-User zu verwenden, sondern einen separat angelegten User mit nur den notwendigen Berechtigungen.
-
RE: RTSP Stream in VIS anzeigen
@iobroker2001 said in RTSP Stream in VIS anzeigen:
Habe ebenfalls meine Reolink-Kamera versucht, mit dem Basic Image in der VIS2 anzuzeigen.
Die aktuelle stabile Version der VIS-2 (2.9.64) scheint einen Bug zu enthalten. Bitte nutze entweder die ältere VIS oder wende den folgenden Workaround an: Link