Beiträge von frankyboy73

    Hi,schön das es läuft. Ja, die Temperaturen kann man mit ausgeben. Habe Temp Draußen und Garage mit eingefügt. Ich habe das jetzt auch so geändert, das nicht mehr alles hintereinander stehen sollte, sondern untereinander, ich hoffe das war in deinem Sinn. Falls du deine Temperaturwerte geändert haben solltest, musst du sie natürlich wieder anpassen.

    Edit: ich habe jetzt noch ne zusätzlichen Stop Timeout2, vor dem Timout2 eingefügt eingefügt, damit der Lüfter bei 2 kurzen Ausschaltbefehlen hintereinandert (Fehlschaltung, sollte aber eigentlich nicht passieren) auch sicher 5 Minuten nach läuft.

    Ups, den Code musste ich gerade noch mal Posten, hatte da nen Textfehler, bei Ein hatte ich auch die Meldung Aus drin, jetzt passt es.

    Ok, danke für den Hinweis. Den Internetzugang hatte ich denen von Anfang an gesperrt, aber das die Alexa Geräte darauf trotzdem zugreifen können wusste ich nicht. Einen hat sie dann wohl erwischt, vor ein paar Wochen fiel er aus. Allerdings haben die anderen vor dem Update vom JS-Controller noch funktioniert.

    Ich habe da noch nen Artikel, der eigentlich über den Dash Adapter ist, gefunden. Da wurde geschrieben das die benötigten Rechte fehlen und das Dateisystem angepasst werden muss, mit diesem Befehl.

    Code
    1. sudo setcap 'cap_net_raw,cap_net_admin+eip' $(readlink -f $(which node))

    Die Buttons laufen dadurch jetzt erst mal wieder, aber ich werde jetzt wohl doch lieber auf ein anderes System umsteigen. Da wird es in Zukunft bestimmt immer wieder Probleme mit geben. Und wenn Alexa sie dann doch noch erwischt, ist es ganz vorbei.

    Die sind nur so schön klein und durch die Wlan Verbindung, über Repeater, überall bei mir einsetztbar, wo Zigbee Geräte teilweise keinen Empfang haben. Einen alternativen Wlan Button, der so klein ist und dazu auch noch günstig, habe ich noch nicht gefunden. Dann muss ich wohl doch mal versuchen mein Zigbee Netz zu verbessern.

    Hi, das Script kommt mir irgendwie komisch vor, schon das Script aus dem ersten Post von Elzersharkmacht mich etwas stutzig. Da wird bei Intervall 9 und Intervall 10 das Intervall in dem Intervall gestoppt, das heißt eigentlich das es kein Intervall gibt. Dann werden in Intervall 3 und 4 nach ner falls Abfrage alle Intervalle gestoppt, und in der falls Abfrage, in noch einer falls Abfrage noch mal alle Intervalle gestoppt was dann unötig wäre, weil schon alle Intervalle gestoppt sind.

    Erforscht kann es sein das mit dem Code aus dem ersten Post etwas nicht stimmt? Oder verstehe ich hier gerade was total falsch.

    So, ich hänge das hier mal mit dran, das Thema passt ja.

    Ich habe den JS-Controller von 2.2.8 auf 2.2.9 geupdatet. Jetzt bekomme ich beim Start von Node Red (Adapterversion 1.13.0) Fehler und Warnungen im Log. Es scheint ein Problem mit den Amazon Dash Nodes zu geben. Wenn ich diese entferne ist der Fehler weg. Ne Neuinstallation der Amazon Dash Nodes hat leider auch keinen Erfolg gebracht, die Fehler kommen wieder und die Dashbuttons haben keine Funktion. Vielleicht kennt ja jemand das Problem.

    Raspberry Pi4 4GB Raspian Duster

    Nodejs 10.19.0

    NPM 6.13.4

    Log Auszug:

    Hi, nur aus Interesse, was hast du da eigentlich für eine Heizung in der Garage? Ist das sowas ähnliches wie ne Standheizung von nem Wohnmobil oder so?

    Wie und was du steuern willst, habe ich aber auch ohne die Info verstanden.

    Das Relais 3 habe ich jetzt so in das Script eingefügt, das es bei einem Aus Befehl für die Heizung zur Sicherheit Eingeschaltet wird und über nen Timeout (timeout2) dann nach 5 Minuten Ausgeschaltet wird. Bei einem Ein Befehl für die Heizung wird das Relais 3 Eingeschaltet und den Timout (timeout2) fürs Ausschalten von Relais 3 stoppe ich.

    Erklärung zum Timout: Bei dem was in dem Timeout steht, wird die ausgewählte Zeit gewartet bis es ausgeführt wird. In unserem Fall 5 Minuten und dann wird der Lüfter ausgeschaltet. Sollte jetzt ein Aus Befehl kommen, wird der Lüfter ja durch den Timout erst nach 5 Minuten ausgeschaltet. Sollte in den 5 Minuten, z.B. nach 3 Minuten, wieder ein Ein Befehl kommen, würde der Lüfter zwar auf Ein gesetzt, aber nach Ablauf der 5 Minuten (timeout2) ausgeschaltet. Deshalb stoppe ich bei einem Ein Befehl den Timeout (stop timeout2), damit das nicht passiert.


    Hier der Code dazu, viel Spaß beim testen.

    Hi, wenn du in dem Script was änderst, egal was, wie z.B den Einschaltwert und das dann speicherst, startet das Script neu.

    Wie gesagt, solltest du öfter diese Fehlmeldungen bekommen, bauen wir das Script noch mal um. Dann musst du dir noch ein Objekt erstellen, als Logigwert, mit Rolle Switch, damit ersetzen wir dann die Variable. Denn Objektewerte werden dauerhaft gespeichert und Variablen leider nicht, die gehen nach Neustart verloren. Aber das kriegen wir dann auch hin, wie man Objekte erstellt weißt du ja.

    Hi, hast du zwischendurch einen Neustart des Iobroker oder des Scripts gemacht? Dann verliert die Variable Heizung nämlich ihren Wert. Sollte das allerdings ohne Neustart öffters passieren, müssen wir vielleicht doch mit nem Objekt arbeiten anstatt der Variable. Habe schon mal davon gelesen das es passieren kann das der Wert von Variablen zwischendurch mal verloren geht, aber habe keine Ahnung warum dies passiert.

    Hi, wenn das Script neu gestartet wird, kann es durchaus sein, das die Heizung einmal ausschaltet obwohl aus ist oder einmal einschaltet obwohl ein ist. Das Script kennt ja nicht den wirklichen Status deiner Heizung. Dafür bräuchte man sonst noch ne Rückmeldung von der Heizung ob die läuft oder nicht. Das wäre natürlich der Idealfall.


    Edit: Und das sie ausgeschaltet hat ist ja sonst bei den Temperaturen normal, Max Garage steht ja nach 18 Uhr auf 4 Grad und da ist 15,9 in deiner Garage ja wesentlich höher.

    Hi, dann füge ich noch ne zusätzliche Variable ein (Heizung) die ich beim ausschalten auf unwahr und beim einschalten auf wahr setze um im Script zu sehen ob ein oder ausgeschaltet wurde. Das mache ich deshalb, weil du deine Relais ja nach ner bestimmten Zeit zurücksetzt und ich von denen nicht den Status ob ein oder ausgeschaltet ist zurückbekomme. Die Idee die beiden Relais in den Wert von Objekt ins Script oben hinzuzufügen war eigentlich ganz gut, aber ich hätte steuere Objekt ID gebraucht.

    Du musst jetzt an 2 Stellen deine Relais auswählen, einmal Relais 1 für aus und einmal Relais 2 für ein. Ich habe jeweils einen Kommentar über der Stelle eingefügt, was du wo auswählen musst.

    Ich denke mal so sollte es funktionieren. Sonst gerne melden.

    Hi, was müssen die Relais denn beim einschalten und ausschalten machen? Muss das Relais dann dauer angezogen sein oder nur kurz anziehen und dann sofort wieder abfallen?

    Zum Beispiel wenn die Heizung angehen soll, Relais 2 dauer an? Oder Relais 2 nur kurz an und wieder aus?

    Hi, du hast im Sonoff Adapter keinen Benutzer und keine Passwort vergeben? Das würde ich an deiner Stelle aber doch mal machen, und das dann auch bei den Sonoff Geräten in den MQTT Einstellungen eintragen.

    Wenn du keinen Benutzer vergeben hast, müsste dann nicht das Feld in den MQTT Einstellungen für Benutzer leer sein?

    Bist du sicher das die Ip in den Mqtt Einstellungen richtig ist. Ist das Gerät im selben Netzwerk wir dein Iobroker?

    Die Fehlermeldung sieht so aus, als wenn er die Adresse, sprich den Mqtt Server (iobroker) nicht erreichen kann.

    Hi, das ist nun mal ein reines Automatikprogramm. So lange der Istwert höher ist wie der Sollwert, wird ausgeschaltet bleiben bzw. ausgeschaltet. Zum manipulieren kann man dann höchstens die Sollwerte so hoch nehmen, das die Istwerte überschritten sind.

    Man könnte sonst höchstens noch ne Handfunktion mit einbauen, aber dafür braucht man dann auch einen Auslöser, der Umschaltet von Automatik auf Hand bzw, auch wieder zurück.

    Im Programm ist mir jetzt nix aufgefallen, warum es hängen bleiben könnte. Kann natürlich sein, das ich da was übersehe.


    Zu berücksichtigen ist auch, wenn du was am Script änderst, das nicht sofort ne Schaltung passiert, sondern nur wenn du von einem deiner Temperatursensoren einen geänderten Wert bekommst. Die Temperatursensoren sind ja die Trigger des Scrips, und nur wenn getriggert wird, läuft das Script auch durch.

    Vielleicht sollten wir dann auch darüber nachdenken, das Script noch mal grundlegend zu ändern und zwar für die Sollwerte keine Variablen im Script zu ändern, sondern mit selbst erstelleten Objekten zu arbeiten, dann brauchst du nicht immer Änderungen im Script zu machen wenn du mal nen Sollwert verstellen willst und diese Sollwerte könnte man dann auch als zusätlichen Trigger benutzen und es würde eine sofortige Schaltung bei Änderung der Sollwerte passieren.

    Hi, ja stimmt genau.

    Nur dieser Satz hier nicht ganz

    "Da wir schon 8,7°C haben im Außenbereich erfolgt keine Schaltung bis wir unterhalb der 8,0°C fallen würden."

    Müsste heißen da schon 8.7 Grad in der Garage sind erfolgt keine Schaltung

    Und da bei dem Max Wert auch mit + und - 0.5 gerechnet wird, erfolgt die Schaltung erst unter 7,5°C und aus wieder über 8,5°C

    Hi, ich habe das Script noch mal überarbeitet, vielleicht wird es dadurch etwas einfacher und auch verständlicher. Du brauchst jetzt für den Tag und für die Nacht jeweils nur noch 2 Werte ändern, siehe Kommentare, den Rest lasse ich dann berechnen.

    Also nur oben die Werte hinter PlusSollwertGarageTag, MaximalTempGarageTag, PlusSollwertGarageTag und MaximalTempGarageNacht ändern.

    Das erste ist ist der Wert den die Heizung höher als Außentemperatur fahren soll, das zweite ist der Wert den die Garagentemperatur Maximal erreichen soll.

    Das ein und ausschalten habe ich dann mit ner Differenz von + 0.5 und - 0.5 berechnet. Willst du diese Temperaturdifferenz anpasssen kannst du das natürlich auch gerne machen. +1 und - 1 oder +2 und - 2. Dadurch vergrößerst du dann die Temperaturdifferenz zwischen ein und ausschalten.

    Das heißt ist es jetzt z.B. am Tag 3 Grad draußen und der PlusSollwertGarage auf 5, geht die Heizung bei unter 7,5 Grad an und bei über 8,5 Grad aus. Da der Maxwert der Garagentemperatur auf 10 Grad steht greift er noch nicht, da nicht erreicht.

    Ist es allerdings am Tag 10 Grad draußen und PlusSollwertGarage auf 5, würde die Heizung bei unter 14,5 Grad einschalte und 15,5 Grad ausschalten, hier greift jetzt allerdings die MaxGarageTemperaturTag von 10 Grad und würde dafür sorgen das die Garage sich erst einschalten würde wenn die Garagentemperatur unter 9,5 liegt und würde wieder ausgehen bei über 10,5.

    Bitte mal testen und Rückmeldung obs klappt. Das alte Script bitte noch nicht löschen, falls Probleme auftreten, pausieren reicht ja.


    Edit: Sorry Fehler im Code, wurde angepasst

    So wie du es eingesetzt hast, sollte es eigentlich richtig sein, der Stundenwert sollte jetzt immer gerundet berechnet werden. War die Heizung, seit dem du das Script geändert hast, schon mal auf ein gewesen? Die Werte werden ja nur hochgezählt wenn die Heizung läuft und damit auch die Berechnung, also müsste die Heizung wenigstens ein mal über eine Minute laufen, aber dann sollte der Wert eigentlich nur noch gerundet angezeigt werden. Wüsste sonst nicht woran es sonst liegen kann.