Skip to content

Skripten / Logik

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

16.5k Topics 213.2k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    P
    Oben steht, dass der Server öfter mal offline ist. Da ist ping meine erste Idee. Ob der Server auf Pings antwortet, weiß ich nicht. Reagiert der Server nicht auf ping, dann evtl. als Ersatz einen httpcheck nehmen. httpcheck nutze ich auf der Synology, bevor die auf den ioBroker zugreift. # ===== HTTP-Check statt Ping ===== curl -s --connect-timeout 3 "$BASE/system.adapter.admin.0.alive" > /dev/null || exit 1 Ist allerdings ein Bash-Skript. Das muss für die Zwecke angepasst werden.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Topics
    79k Posts
    S
    @TT-Tom Vielen Dank für den Tip.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • Gewerk durchsuchen

    Moved
    5
    0 Votes
    5 Posts
    811 Views
    bahnuhrB
    Also ich bekomme es nicht hin. Ausgangslage: Im Gewerk "Batterie betrieben" habe ich alle Aktoren die eine Batterie haben. Lt. iobroker (Lasche Aufzahlungen) sind dies 96 Aktoren. Dies kommt auch hin. Anforderung: Alle Aktoren ermitteln die "lowbat" haben. Versuch1: - durchsuchen alle Geräte (function… -> nicht angegeben) var cacheSelectorLOWBAT = $('channel[state.id=*.LOWB*]'); log (cacheSelectorLOWBAT.length); Als Ergebnis bekomme ich 140. Hierbei sind teilweise Aktoren doppelt: filename="bild1.jpg" index="0">~~ Einmal mit dieser "0" und einmal ohne "0". Weiterhin Warnhinweis im log: "cux … lowbat not found" Versuch2: - durchsuchen Gewerk "Batterie betrieben" (functions="Batterie betrieben") var cacheSelectorLOWBAT = $('channel[state.id=*.LOWB*](functions="Batterie betrieben")'); log (cacheSelectorLOWBAT.length); Als Ergebnis bekomme ich 26. Hier fehlen auf einmal sämtliche Heizung Aktoren. Warum weiß ich nicht. Versuch3: - durchsuchen nur Gewerk "Heizung" (functions="Heizung") var cacheSelectorLOWBAT = $('channel[state.id=*.LOWB*](functions="Heizung")'); log (cacheSelectorLOWBAT.length); Als Ergebnis bekomme ich 0. Warum werden die Aktoren nicht gefunden ??? Fazit: Wie bekomme ich es hin, dass die Aktoren gesucht und gefunden werden die im Gewerk "Batterie betrieben" sind. Alternativ auch alle Aktoren durchsuchen (würde mir aber nicht so gefallen, da dann bei den cux-Geräten ein warn Hinweis im log erscheint "cux … lowbat not found" Irgendwie raff ichs nett. Bitte Hilfe. mfg Dieter
  • [gelöst] From Dusk Till Dawn

    Moved
    6
    0 Votes
    6 Posts
    1k Views
    rantanplanR
    @ldittmar: Hallo Leute, ich würde gerne bei einem Ereignis etwas ausführen, wenn es gerade zeitlich zwischen "dusk" und "dawn" ist, aber irgendwie klappt es nicht. Ich habe versucht Astrozeiten zu holen, die in String-Uhrzeit umzuwandel und dann mit "between" zu veegleichen, aber ohne erfolg. (bin gerade unterwegs und kann ggf später mein code posten). Grüße, ldittmar ` Hallo ldttmar Schau mal hier http://forum.iobroker.net/viewtopic.php … 891#p48209 Vielleicht kannst Du mit diesem Prinzip etwas anfangen. Grüße
  • TV Spielfilm - CSS Einstellungen

    Moved
    4
    0 Votes
    4 Posts
    1k Views
    P
    Hallo, für den Anfang könnt ihr mal den oberen Teil der CSS-Anweisungen weglassen. Also ! Diesen Code rauslöschen .tclass-th { /* Headerzeilen */ background-color: darkgrey; background-color: rgba(100,100,100,0.8); color: white; font-weight: bold; font-family: Arial; } >! .tclass-th1 { /* linker Header */ width: 20px; text-align: center; color: transparent; /* Text ausblenden */ /* display: none; */ /* ganze Spalte ausblenden */ } >! .tclass-th .tclass-th1 { display: none; /* Spaltenüberschrift überm Bild ausblenden*/ } >! .tclass-tr { color: red; } >! .tclass-tr:nth-child(odd) { background-color: darkgreen; background-color: rgba(50,120,80,0.6); } >! .tclass-tr:nth-child(even) { color: yellow; background-color: darkred; background-color: rgba(150,150,150,0.2); } Gruß Pix
  • 0 Votes
    6 Posts
    1k Views
    T
    Habs rausgefunden :idea: Der on-Trigger wird mit dem Parameter für das Gewerk erweitert: on({id: /^hm-rpc\.[.:\w\d-]+\.DIRECTION$/, change: "any", val: 0, enumName: "triggerDim", logic: "and"}, function(obj) { console.log("Dimmen beendet: " + obj.newState.val); }); Meine nächste Baustelle lautet RegExp :!: Nochmals danke !!!
  • [gelöst] Laderegelung für Tablet

    Moved
    27
    0 Votes
    27 Posts
    5k Views
    MathiasJM
    Ok danke! Dann hänge ich den Aktor an die Steckdose, an der der PC hängt Danke, Mathias
  • CCU-Historian Import

    Moved
    6
    0 Votes
    6 Posts
    2k Views
    apollon77A
    Kommt drauf an wie Du es schreiben wollen würdest … Am Ende nimmt die "storeState" (sorry Name doch leicht anders) Funktion und bekommt eine oder mehrere States übergeben. State hat immer "id" mit der Id und dann die Daten. Welche das so sind schau es Dir in den History-JSON Files an ... habs grad nicht im Zugriff.
  • 0 Votes
    20 Posts
    2k Views
    bahnuhrB
    Vom Adapter - hab ich mir schon gedacht. Trotzdem muss man das erst einmal wissen. Man versucht halt mit der normalen Leertaste eine if abfrage zu basteln und ist fast am verzweifeln warum dies nicht klappt. Danke für den Tipp mit dem "alt + Leertaste". Muss ich mal versuchen. Wieder was gelernt. Mit freundlichen Grüßen
  • RS232 unter javascript adapter ansprechen

    Moved
    4
    0 Votes
    4 Posts
    2k Views
    BlackmikeB
    @paul53: Hilft Dir das NPM-Modul https://www.npmjs.com/package/raspi-serial ? ` danke paul, ich denke das ist die lösung, wo ich ansetzen werde.. sobald ich die rs232 geöffnet kriege ist alles ok. thnx, black
  • Erkennung neuer States im JS

    Moved
    2
    1
    0 Votes
    2 Posts
    583 Views
    P
    Hm, ich habe den Netatmo Adapter entsprechend angepasst, so das dieser nun neue Events in einen eigenen State schreibt … Damit hat sich die Frage erledigt! Generell würde mich aber interessieren, wie man auf komplett neue States subscriben kann
  • Wochenprofile vom Raumthermostat per Script auswählen

    Moved
    9
    0 Votes
    9 Posts
    2k Views
    N
    Ist zwar schon länger her aber trotzdem mal die vorsichtige Frage…. Gibt es für das Umschalten von Wochenprogrammen (Wandthermostat) schon eine funktionierende Möglichkeit? Gruß Thomas
  • Blockly keine Auswahl

    Moved
    2
    1
    0 Votes
    2 Posts
    585 Views
    juergen2908J
    Hat sich erledigt, lag am Browser (IE) @juergen2908: Grüß Euch, wollte heute Blockly ausprobieren. Leider habe ich keine Auswahl. iobroker läuft auf einer pi 2b. was fehlt mir da? Bitte um Hilfe LG Jürgen `
  • Milight hack per Serialport über ein script ansprechen

    Moved
    1
    0 Votes
    1 Posts
    641 Views
    No one has replied
  • Script in einem Widget mit HTTP GET Befehl

    Moved
    14
    0 Votes
    14 Posts
    3k Views
    hg6806H
    Jetzt geht es halbwegs. Sind immer noch 2 Warnings drin. Wenn ich 2 Schleifendurchgänge einstelle, wird nur um 0,5dB erhöht, bei 4 Durchgängen wird um 1dB erhöht. Irgendwas stimmt da mit der Schleife wohl noch nicht. Mir reicht es aber so, ich werde es einfach so einstellen, dass sich pro Tastendruck um 1,5dB erhöht. Danke nochmals!
  • RunScript / stopScript Problem

    Moved
    2
    0 Votes
    2 Posts
    1k Views
    M
    Hallo, ich habe noch etwas weiter experimentiert und festgestellt, dass man das stopScript nur mit dem reinen Scriptnamen aufrufen darf. Also z.B.: stopScript("Lichtautomatik_Couch"); Dann wird unter Objects das Value = true gesetzt. Zurücksetzen des Value geht aber nicht!? Das ist ja nötig, um das Script erneut vom Button aus starten zu können. Forsche mal weiter… Viele Grüße myiob
  • [gelöst] Anbindung CONRAD Transponder RF-Leser über serialport

    Moved
    1
    0 Votes
    1 Posts
    829 Views
    No one has replied
  • [Erledigt]Hilfe Javascript Wert aus Alexa in SV schreiben

    Moved
    2
    0 Votes
    2 Posts
    553 Views
    paul53P
    setStateDelayed(idlautstaerke, x, 1000); // Nach einer Sekunde den Wert in XBMC Volume schreiben
  • Countdown vorzeitig stoppen

    Moved
    4
    0 Votes
    4 Posts
    2k Views
    D
    Klasse. Funktioniert genau so, wie gewünscht. Vielen, vielen Dank. Gruß, Thorsten
  • Gewerke "durchschleifen"

    Moved
    4
    0 Votes
    4 Posts
    872 Views
    M
    Ich habe es mir mal rudimentär angesehen und es sieht so aus, als wäre es eine machbare Aufgabe, aber man müsste sich einarbeiten. Für mich ist leider der Januar die reinste Einarbeitungshölle geworden und da passe ich auf die Schnelle, aber ohne eine solche Listenfunktion kann ich viele Skripte nicht portieren .. mal sehen, was mir da noch einfällt. Zum Glück sind Blockly und iobroker.JavaScript gut dokumentiert.
  • SayIt - Ausgabe bei Wetterwarnung (DWD)

    Moved
    40
    0 Votes
    40 Posts
    6k Views
    N
    Hi, welche Ursache könnte es haben, dass bei diesem Skript die eigentliche Meldung (also idDWD) nicht mit ausgegeben wird obwohl sie in den Datenpunkten vorhanden ist. Irgendwie sehe ich den Wald vor lauter Bäumen nicht….. var Severity = "dwd.0.warning.severity"/*Warning severity*/; var request = require("request"); var ansage2 = "Eine bestehende Wetterwarnung wurde aufgehoben." ; on(Severity, function (obj) { if (obj.newState.val !==0) { var idDWD = getState("dwd.0.warning.description"/*Warning description*/).val; var Begin = getState("dwd.0.warning.begin"/*Warning begin*/).val; var End = getState("dwd.0.warning.end"/*Warning end*/).val; Url = "http://192.168.178.58:50000/tts=Der Deutsche Wetterdienst meldet." + idDWD ; request(Url); } if (obj.newState.val === 0) { Url = "http://192.168.178.58:50000/tts=" + ansage2 ; request(Url); } }); Danke für die Unterstützung. Gruß Thomas
  • XML Ausgabe parsen - DENON

    Moved
    7
    0 Votes
    7 Posts
    2k Views
    B
    Mahlzeit, keine Ahnung ob das der eleganteste Weg ist, aber über den Weg JSON Objekt - bearbeiten - Array einlesen komme ich jetzt an die Werte: var link = 'http://IPdesAVR/goform/formMainZone_MainZoneXmlStatusLite.xml'; var request = require('request'); var parseString = require('xml2js').parseString; function datenlesen() { request(link, function (error, response, body) { var xml, result; parseString(body, function (err, result) { log("XML Objekt: " + result); xml = JSON.stringify(result); log("XML Objekt: " + xml); xml=replaceAll(xml,'[',''); xml=replaceAll(xml,']',''); xml=JSON.parse(xml); log ("Power: " + xml.item.Power.value); log ("Input: " + xml.item.InputFuncSelect.value); log ("Volume: " + xml.item.MasterVolume.value); log ("Mute: " + xml.item.Mute.value); }); }); // Ende request } datenlesen(); function replaceAll(string, token, newtoken) { if(token!=newtoken) while(string.indexOf(token) > -1) { string = string.replace(token, newtoken); } return string; } Das ergibt: 13:44:34.573 [info] javascript.0 script.js.##_Denon: XML Objekt: {"item":{"Power":[{"value":["OFF"]}],"InputFuncSelect":[{"value":["Favorites"]}],"VolumeDisplay":[{"value":["Absolute"]}],"MasterVolume":[{"value":["-60.0"]}],"Mute":[{"value":["off"]}]}} 13:44:34.573 [info] javascript.0 script.js.##_Denon: Power: OFF 13:44:34.573 [info] javascript.0 script.js.##_Denon: Input: Favorites 13:44:34.573 [info] javascript.0 script.js.##_Denon: Volume: -60.0 13:44:34.573 [info] javascript.0 script.js.##_Denon: Mute: off Und ich kann es weiter verarbeiten… Danke. Grüße Brati

601

Online

32.6k

Users

82.2k

Topics

1.3m

Posts