Skip to content

Skripten / Logik

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

16.5k Topics 213.4k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    P
    @ArnoD sagte in E3DC Hauskraftwerk steuern: @azzkikrboy Hierfür brauchst du den Adapter ‚Energiefluss-erweitert‘. Damit lässt sich der Energiefluss richtig schick grafisch darstellen. Die Konfiguration ist zwar etwas zeitaufwendig, aber die Mühe lohnt sich definitiv für das Design! ;) [image: 1770554279240-video-project.gif] Sieht sehr gut aus, hab ich bei mir auch mal ausprobiert. Leider funktioniert das nicht mit der Android VIS-App. Lösung wäre nur der Kiosk Browser aber das ist mir zu umständlich. Schade :-(
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    L
    Ja, sollte gehen.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • Log javascript.0 Fehlereingrenzung

    Moved
    2
    0 Votes
    2 Posts
    496 Views
    C
    Hallo, kann es sein, dass du nicht die komplette Fehlermeldung reinkopiert hast? Dann könnte man auch sagen obs von der javascript Instanz kommt oder von einem Script, das läuft. Zu jedem script, das du anlegst, erzeugt die Instanz einen State unter javascript0.ScriptEnabled.DeinScriptName, wenn du da manuell States löscht kann das durchaus passieren. Übrigends sind die Fehlerangaben in der aktuellen Version präziser im log eingetragen. Sonst bleibt nur, alle Scripts stoppen und nach und nach wieder anwerfen :roll:
  • 0 Votes
    5 Posts
    721 Views
    C
    @htrecksler: Ich tippe eher darauf, das ein Umlaut aus ioBroker nicht als Umlaut auf der CCU ankommt. ` Das Problem ist, dass da nicht etwa Müll zur CCU wandert, sondern gar nichts und beim ACK der State in IObroker wieder mit dem Wert, der momentan in der CCU ist, ueberschrieben wird. Wenn kein ACK kommen wuerde, koennte ich ja feststellen, dass etwas nicht stimmt. Klar ist, dass ich diesen Umlaut nicht absichtlich schreibe, ist wohl aus gewohnheit rein gerutscht, und glaubt mir, bis mein Hirn bei der Fehlersuche geschnallt hat, dass```` "für" != "fuer" Leider habe ich keine möglichkeit dieses Verhalten IObroker-CCU tiefer zu analysieren, mein aber, dass das mit den Umlauten früher funktioniert hat.
  • Anwesenheit und Abwesenheit über Geofency mit pushover senden

    Moved
    9
    0 Votes
    9 Posts
    2k Views
    S
    ich muß nochmal Danke für die Hilfe sagen. Bin neu in diesem Bereich aber man bekommt immer Hilfe ohne dumme Sprüche. Echt Super ioBroker macht wirklich spaß. Gruß Sunny
  • Global function - aufrufendes Script rausfinden??

    Moved
    7
    0 Votes
    7 Posts
    986 Views
    etvE
    ok, danke! Ich hab mich heute mal hingesetzt und die Zeiten analysiert wann ich diese Meldungen bekomme und was da im Normalfall überhaupt laufen könnte…. ... jo, - und siehe da - den Schuldigen gefunden!! Ich hab vor einigen Tagen einige meiner Scripts "gesäubert" und übersichtlicher gemacht und da einen Block außerhalb einer if-Abfrage falsch plaziert..... das war's [emoji16] Wie heißt es so schön: never touch a running system [emoji23][emoji23][emoji23] Liebe Grüße Tom Gesendet mit Tapatalk
  • HTTP und Blockly dreht durch….

    Moved
    4
    2
    0 Votes
    4 Posts
    710 Views
    DutchmanD
    @Blackeye: Und die externen Eingänge, trotzdem gehen doch nur 2 Bedingungen, oder? Danke ` komt drauf af was du meinst es gehen soviele bedinungen wie du willst, sowas z.b. [image: 979_und_oder.jpg] oder so [image: 979_extreme.jpg] sonst wen gibts aber auch ? [image: 979_else_if.jpg]
  • Blockly mit mehreren HTTP aufrufen

    Moved
    4
    1
    0 Votes
    4 Posts
    686 Views
    DutchmanD
    bau mal einen debug block rein und schaue ins log was passiert
  • Schedule

    Moved
    6
    0 Votes
    6 Posts
    1k Views
    paul53P
    Man kann auf den Feiertag triggern und das Schedule anpassen. var sched1 = null; // Schedule-Objekt für Wochen-/Feiertage function konnex(...) { ... } schedule('0 23 * * 6,7', function() { // Wochenende konnex(...); }); on('knx.0.Zentralfunktionen.Zeitfunktionen.Feiertag', function(dp) { if(sched1) clearSchedule(sched1); if(dp.state.val) { // Feiertag sched1 = schedule('0 23 * * 1-5', function() { konnex(...); }); } else { sched1 = schedule('0 19 * * 1-5', function() { konnex(...); }); } });
  • Javascript Absturz mit Blockly Programm

    Moved
    10
    1
    0 Votes
    10 Posts
    3k Views
    R
    Hallo, installiere mal das neueste javascript update vom git, dann gings bei mir. Musste aber das Blockly nochmal neu zusammenstellen, mit dem vorhandenen stürzte der Adapter wieder ab. Jetzt kommt nur noch eine Fehlermeldung im log wenn der Wemos nicht erreichbar ist, der Adapter läuft aber weiter.
  • Stop Event

    Moved
    5
    0 Votes
    5 Posts
    1k Views
    M
    @Bluefox: https://github.com/ioBroker/ioBroker.javascript#onstop ` Danke, genau was ich gesucht und anscheinend auch beim 10x lesen der Seite übersehen habe. :?
  • [Fehler] Script enable leer

    Moved
    2
    0 Votes
    2 Posts
    573 Views
    BuZZyB
    Hast du irgendwelche Filter in der Ansicht der Objekte gesetzt? Gruß
  • Skript nur über Echo starten

    Moved
    2
    0 Votes
    2 Posts
    397 Views
    BuZZyB
    Klar, mit einer Funktion die nur ausgelöst wird wenn ein bestimmter Datenpunkt durch dein Echo getriggert wird sollte der richtige Weg sein. z.B. function tolleFunktion() { setState(....); } Dann musst du einen Datenpunkt überwachen und sobald dieser durch den Echo geändert wird mit```` tolleFunktion(); Gruß
  • [Gelöst] Array Subscriptions Problem

    Moved
    7
    0 Votes
    7 Posts
    843 Views
    T
    Danke sehr, ich muss das bestimmt noch 100x durchlesen, bis ich es wirklich verstanden habe, aber das hilft mir weiter.
  • Fußbodenheizung Blockly made it simple ;-)

    Moved
    11
    4
    0 Votes
    11 Posts
    4k Views
    WalW
    @simpixo: @Wal: Das Sollwert-Blockly habe ich getestet, funktioniert. Werde ich wahrscheinlich nutzen. Verbesserung wäre in meinem Fall, ein aktualisieren des Sollwertscript's bei Sollwertänderung. Ich nutze LaCrosse Sensoren für die Temperatur, die über MQTT eingelesen werden. Um Traffic zu vermeiden, sende ich nur bei Temperaturänderung meine Werte, deshalb kann es sein, das bei Sollwertänderung die Steuerung lange braucht um sich anzupassen, da das Script nur bei Temperaturänderung greift. Habe das so mal gelöst: Blockly.JPG ` Wie liesst du denn di Lacross Sensoren mit MQTT aus? Ich hab auch ein paar davon lese diese aber mit einem Jeelink aus Gruss Adrian ` Ich nutze einen Wemos mini mit einem RFM69 und einer 8-fach Relaisplatine für die Steuerung der Heizventile. Bei interesse kann ich einen eigenen Thread erstellen. Hardware siehe hier: https://wiki.fhem.de/wiki/LaCrosseGateway_V1.x Software habe ich zusammenkopiert: `#define PROGNAME "LaCrosse_MQTT.Gateway" #define PROGVERS "1.00" #define RFM1_SS 15 #define LED_PIN 16 #include <esp8266wifi.h> #include <pubsubclient.h> #include <eeprom.h> #include "Arduino.h" #include "SPI.h" #include "Wire.h" #include "RFMxx.h" #include "SensorBase.h" #include "LaCrosse.h" #include "HashMap.h" #define ENABLE_ACTIVITY_LED 1 // <n>a set to 0 if the blue LED bothers // address of PCF8574 IC #define PCF8574_ADDR (0x20) unsigned long INITIAL_FREQ = 868300; // <n>f initial frequency in kHz (5 kHz steps, 860480 ... 879515) byte TOGGLE_MODE_R1 = 3; // <n>m bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps (for RFM #1) unsigned long DATA_RATE_R1 = 17241ul; // <n>r use one of the possible data rates (for RFM #1) uint16_t TOGGLE_INTERVAL_R1 = 0; // <n>t 0=no toggle, else interval in seconds (for RFM #1) byte spb = 0; byte tloop[50]; byte tsensor = 0; char output = 0; struct LaCrosse::Frame tframe[50]; String strTopic; String strPayload; const char* ssid = "***"; const char* wpakey = "***"; const char* mqtt_server = "***"; const char* login = "***"; const char* password = "***"; WiFiClient espClient; PubSubClient client(espClient); // --- Variables ------------------------------------------------------------------------------------------------------- String clientName; uint8_t mac[6]; unsigned long lastToggleR1 = 0; unsigned long commandData[32]; RFMxx rfm1(13, 12, 14, RFM1_SS); void SetDataRate(RFMxx *rfm, unsigned long dataRate) { if(rfm->GetDataRate() == 20000 && dataRate != 20000) { rfm->InitializeLaCrosse(); rfm->EnableReceiver(true); } rfm->SetDataRate(dataRate); } void HandleCommandI(unsigned long *commandData, byte length){ word interval = 60; if (length == 3) { interval = commandData[2]; } if (length >= 2) { RFMxx *rfm; switch (commandData[0]) { case 1: rfm = &rfm1; break; default: rfm = NULL; break; } } } // This function is for testing void HandleCommandX(byte value) { if (value == 4) { Serial.println("#1: " + (!rfm1.IsConnected() ? "---" : String(rfm1.GetDataRate()))); } } RFMxx *GetRfmForNumber(byte number) { RFMxx *result = NULL; if (number == 1) { result = &rfm1; } return result; } void HandleCommandO(byte rfmNbr, unsigned long value, unsigned long *data, byte size) { // 50305o (is 0xC481) for RFM12 or 1,4o for RFM69 RFMxx *rfm = GetRfmForNumber(rfmNbr); if (size == 1 && rfm->GetRadioType() == RFMxx::RFM12B) { rfm->SetHFParameter(value); } else if (size == 2 && rfm->GetRadioType() == RFMxx::RFM69CW) { rfm->SetHFParameter(data[0], data[1]); } } void HandleCommandV() { String result = "\n"; result += "["; result += PROGNAME; result += "."; result += PROGVERS; if (rfm1.IsConnected()) { result += " (1="; result += rfm1.GetRadioName(); result += " f:"; result += rfm1.GetFrequency(); if (rfm1.ToggleInterval) { result += " t:"; result += rfm1.ToggleInterval; result += "~"; result += rfm1.ToggleMode; } else { result += " r:"; result += rfm1.GetDataRate(); } result += ")"; } result += " {IP="; if (WiFi.status() == WL_CONNECTED) { result += WiFi.localIP().toString(); } else { result += WiFi.softAPIP().toString(); } result += "}"; result += "]"; Serial.println(result); } bool HandleReceivedData(RFMxx *rfm) { bool result = false; rfm->EnableReceiver(false); byte payload[PAYLOADSIZE]; rfm->GetPayload(payload); rfm->EnableReceiver(true); String data = ""; byte frameLength = 16; // Try LaCrosse like TX29DTH if (data.length() == 0 && LaCrosse::IsValidDataRate(rfm->GetDataRate())) { data = LaCrosse::GetFhemDataString(payload); frameLength = LaCrosse::FRAME_LENGTH; spb = 0; } if (data.length() > 0) { result = true; if (client.connected()){ switch (spb) { case 0: { byte x = 0; struct LaCrosse::Frame frame; LaCrosse::DecodeFrame(payload, &frame); for (int i = 0; i < tsensor; i++) { if (frame.ID == tloop[i]) { x = 1; if ((tframe[i].ID != frame.ID) || (tframe[i].Temperature != frame.Temperature) || (tframe[i].Humidity != frame.Humidity) || (tframe[i].WeakBatteryFlag != frame.WeakBatteryFlag) || (tframe[i].NewBatteryFlag != frame.NewBatteryFlag)) { String tID = ""; String tTemp = ""; String tHum = ""; String tsen = String(i); tID = frame.ID; tTemp = frame.Temperature; tHum = frame.Humidity; String tID0 = "/lacrosse/sensor/" + tsen + "/id/"; String tID1 = "/lacrosse/sensor/" + tsen + "/temperatur/"; String tID2 = "/lacrosse/sensor/" + tsen + "/humidity/"; String tID3 = "/lacrosse/sensor/" + tsen + "/battery/"; client.publish(tID0.c_str(), tID.c_str()); client.publish(tID1.c_str(), tTemp.c_str()); client.publish(tID2.c_str(), tHum.c_str()); if (frame.WeakBatteryFlag) { client.publish(tID3.c_str(), "Low"); } else if (frame.NewBatteryFlag) { client.publish(tID3.c_str(), "New"); } else client.publish(tID3.c_str(), "OK"); tframe[i].ID = frame.ID; tframe[i].Temperature = frame.Temperature; tframe[i].Humidity = frame.Humidity; tframe[i].WeakBatteryFlag = frame.WeakBatteryFlag; tframe[i].NewBatteryFlag = frame.NewBatteryFlag; } break; } } if (x == 0){ if (frame.NewBatteryFlag) { } else { tloop[tsensor] = frame.ID; tsensor ++; EEPROM.begin(512); EEPROM.write(tsensor, frame.ID); EEPROM.write(0, tsensor); EEPROM.commit(); Serial.println(EEPROM.read(0)); EEPROM.end(); } } } default: break; } } } return result; } void HandleDataRateToggle(RFMxx *rfm, unsigned long *lastToggle, unsigned long *dataRate) { if (rfm->ToggleInterval > 0) { // After about 50 days millis() will overflow to zero if (millis() < *lastToggle) { *lastToggle = 0; } if (millis() > *lastToggle + rfm->ToggleInterval * 1000 && rfm->ToggleMode > 0) { // Bits 1: 17.241 kbps, 2 : 9.579 kbps, 4 : 8.842 kbps, 8 : 20.000 kbps HashMap <unsigned 4/long,/unsigned="">dataRates; if (rfm->ToggleMode & 1) { dataRates.Put(17241, 17241); } if (rfm->ToggleMode & 2) { dataRates.Put(9579, 9579); if (dataRates.Size() > 0) { *dataRates.GetValuePointerAt(dataRates.Size() - 2) = 9579; } } if (rfm->ToggleMode & 4) { dataRates.Put(8842, 8842); if (dataRates.Size() > 0) { *dataRates.GetValuePointerAt(dataRates.Size() - 2) = 8842; } } if (rfm->ToggleMode & 8) { dataRates.Put(20000, 20000); if (dataRates.Size() > 0) { *dataRates.GetValuePointerAt(dataRates.Size() - 2) = 20000; } } *dataRates.GetValuePointerAt(dataRates.Size() - 1) = dataRates.GetKeyAt(0); *dataRate = dataRates.Get(rfm->GetDataRate(), 0); if (*dataRate == 0) { *dataRate = 17241; } SetDataRate(rfm, *dataRate); *lastToggle = millis(); } } } void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, wpakey); clientName += "wemos_lacrosse_"; WiFi.macAddress(mac); clientName += macToStr(mac); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } randomSeed(micros()); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } // =========================================================== // Callback Funktion von MQTT. Die Funktion wird aufgerufen // wenn ein Wert empfangen wurde. // =========================================================== void callback(char* topic, byte* payload, unsigned int length) { payload[length] = '\0'; strTopic = String((char*)topic); if (strTopic.substring(9,17) == "nathalie") { int rel = strTopic.substring(21).toInt(); String value = String((char*)payload); Serial.print(strTopic); Serial.print("="); Serial.println(value); if(value == "false") { bitSet(output, rel-1); } else { bitClear(output, rel-1); } char k = 0; // Temporere Variable fuer XOR Operation output ^= bitSet(k, rel-1); // Umschalten den gewaelten Relay mit XOR Wire.beginTransmission(PCF8574_ADDR); //Öffnen der Verbindung Wire.write(~output); // Byte Invertieren, bei "0" sind Relais an Wire.endTransmission(); // Stop-Bedingung I2C } } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); if (client.connect((char*) clientName.c_str(), login, password)) { Serial.println("connected"); client.publish("/heizung/nathalie/rel1","false"); client.publish("/heizung/nathalie/rel2","false"); client.publish("/heizung/nathalie/rel3","false"); client.publish("/heizung/nathalie/rel4","false"); client.publish("/heizung/nathalie/rel5","false"); client.publish("/heizung/nathalie/rel6","false"); client.publish("/heizung/nathalie/rel7","false"); client.publish("/heizung/nathalie/rel8","false"); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } String macToStr(const uint8_t* mac){ String result; for (int i = 0; i < 6; ++i) { result += String(mac[i], 16); if (i < 5){ result += ':'; } } return result; } void setup(void) { Serial.begin(57600); delay(1000); Serial.println(); Serial.println("Read EEprom"); EEPROM.begin(512); // for (int i = 0; i < 5; i++) { // EEPROM.write(i, 0); // } // EEPROM.commit(); tsensor = EEPROM.read(0); Serial.println(tsensor); for (int i = 0; i < tsensor; i++) { tloop[i] = EEPROM.read(i + 1); Serial.println(tloop[i]); } EEPROM.end(); Serial.println("Read EEprom ready!"); SPI.begin(); delay(250); rfm1.Begin(); rfm1.ToggleMode = TOGGLE_MODE_R1; rfm1.ToggleInterval = TOGGLE_INTERVAL_R1; lastToggleR1 = millis(); Serial.println("Searching RFMs"); if (rfm1.IsConnected()) { rfm1.InitializeLaCrosse(); rfm1.SetFrequency(INITIAL_FREQ); SetDataRate(&rfm1, DATA_RATE_R1); rfm1.EnableReceiver(true); Serial.print("Radio #1 found: "); Serial.println(rfm1.GetRadioName()); } setup_wifi(); client.setServer(mqtt_server, 1883); client.setCallback(callback); Wire.begin(); //Initialisieren der I2C Verbindung. MUSS im Setup aufgerufen werden. Wire.beginTransmission(PCF8574_ADDR); // IC-Adresse Wire.write(~output); // Byte senden Daten werden Inveriert Wire.endTransmission(); // I2C Stopbedingung delay(1000); HandleCommandV(); Serial.println("Setup completely done"); } byte HandleDataReception() { byte receivedPackets = 0; if (rfm1.IsConnected()) { rfm1.Receive(); if (rfm1.PayloadIsReady()) { if (HandleReceivedData(&rfm1)) { receivedPackets++; } } } return receivedPackets; } void HandleDataRate() { if (rfm1.IsConnected()) { HandleDataRateToggle(&rfm1, &lastToggleR1, &DATA_RATE_R1); } } // ********************************************************************** void loop(void) { if (!client.connected()) { reconnect(); } client.loop(); // Handle the data reception // ------------------------- byte receivedPackets = HandleDataReception(); // Handle the data rate // -------------------- HandleDataRate(); }</unsigned></n></n></n></n></n></eeprom.h></pubsubclient.h></esp8266wifi.h>` ![2551_mqtt33.jpg](/assets/uploads/files/2551_mqtt33.jpg) [/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
  • Blockly Script für Wetteransage

    Moved
    11
    0 Votes
    11 Posts
    2k Views
    rantanplanR
    @badplay: Geil das such ich Wie habt ihr die Ausgabe geregelt was nehmt ihr für Boxen dazu? Habe einen echo dot bald ist der echo plus da. Aber so wie ich lese kann man ihn als Bluetooth Gerät nicht so richtig nutzen am raspberry pi oder gibt es was neues? Wie macht ihr das? ` Hallo badplay Mache zu dem Thema bitte einen neuen Thread auf. Sonst kommt dieser hier völlig durcheinander. Danke. Grüße
  • Bewegungsmelder & Zeitsteuerung

    Moved
    11
    0 Votes
    11 Posts
    3k Views
    S
    Hey…ich danke euch! Und natürlich ganz besonders pix! :D Das Skript funktioniert super. Da ich mir gesagt habe, dass ich kein Skript einbaue, welches ich nicht verstehe, bin ich inzwischen auch damit durch. Ja, schön gelöst. Euch noch einen schönen Abend!
  • [Hilfe] Blockly Script für Markise funktioniert nicht

    Moved
    10
    0 Votes
    10 Posts
    1k Views
    M
    Hallo Rantanplan! Ja, der Baustein ist rausgerutscht :( Ich bin schon etwas weiter und arbeite mit variablen. Falls ich es nicht hinbekomme melde ich mich wieder. liebe Grüße
  • Licht Dimmer miteinander + Javascript Obkekt binden

    Moved
    5
    2
    0 Votes
    5 Posts
    2k Views
    smileS
    Hmm sehr merkwürdig. Ich habe das ganze jetzt nochmal mit etwas anderem getestet, simpler Gedanke: –> Verknüpfung einer Systemvariable auf der Homematic (Beschattungsautomatik = wahr/falsch) mit einem Script in io.broker (scriptenabled = wahr/falsch) [image: 3472_beschattung_modus_kn_pfen.png] ! ```` <xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="`04oM6(o%bNeVq@/#zB{" x="-537" y="-237"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="I?QRr,;BEMk~/g~9!P5#"><field name="oid">javascript.0.scriptEnabled.Beschattungen.Beschattung_Schlaf_Auto_Sonne</field></shadow></value> <statement name="STATEMENT"><block type="update" id="iIdy2c%:Q}-6p=rTU}Lu"><mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.10602</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="~T,trarZ#uumgbZut:bb"><field name="ATTR">val</field> <field name="OID">javascript.0.scriptEnabled.Beschattungen.Beschattung_Auto_Sonne</field></block></value></block></statement> <next><block type="on_ext" id="ArbHcj(O]Ecd5KzOyxpw"><mutation items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION">false</field> <value name="OID0"><shadow type="field_oid" id="^LRAnfnJzKLHL4KC54dW"><field name="oid">hm-rega.0.10602</field></shadow></value> <statement name="STATEMENT"><block type="control" id="I,p%:gKl@b7c?,tCKPL3"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.scriptEnabled.Beschattungen.Beschattung_Auto_Switch</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="Q^KMIXVJ!R{kNlZm*lz)"><field name="ATTR">val</field> <field name="OID">hm-rega.0.10602</field></block></value></block></statement></block></next></block></xml> Leider tut sich in beiden Fällen garnichts, also weder wenn auf der Homematic die Variable geändert wird, noch wenn ich in io.broker das Script manuell Starte/beende. Es kann doch eigentlich nicht so schwer / umständlich sein Zustände untereinander zu synchronisieren?
  • Blockly - Verwendung von Aufzählungen /enum.functions.verschluss zb.

    Moved
    5
    0 Votes
    5 Posts
    2k Views
    rantanplanR
    @Holger76: Schade, dachte ich mir. Falls sich das irgendwie integrieren liese, wäre das ne gute Sache. ` Das wird wohl nie funktionieren. Ein Script ist statisch. Du kannst innerhalb eines Scripts mit enums arbeiten. Aber nicht als Trigger! Wenn Du einem enum etwas hinzufügst müsste sich das Script ja selbst umschreiben. Grüße
  • [gelöst] Benötige Hilfe beim Variable setzen

    Moved
    4
    0 Votes
    4 Posts
    624 Views
    H
    Danke, so habe ich es hin bekommen.
  • Unterstützung bei den ersten Skripten gesucht…

    Moved
    31
    0 Votes
    31 Posts
    4k Views
    H
    Guten Abend, kann man das Script```` on({id: 'hm-rpc.1.IEQ053xxxx.1.PRESS_SHORT‘}, function (obj) { setState("hm-rpc.1.IEQ038xxxx3.State",!getState("hm-rpc.1.IEQ038xxxx3.State").val); }); Egal wo ich z. B. XXX.level und den Wert einbaue, schaltet die Lampe nicht mehr sauber. :?

276

Online

32.6k

Users

82.3k

Topics

1.3m

Posts