Skip to content

JavaScript

2.5k Topics 49.2k Posts

Hilfe für Skripterstellung mit JavaScript

NEWS

  • [gelöst] JS direkt im CSS hqwidgets Window and Shutter

    12
    2
    0 Votes
    12 Posts
    799 Views
    OliverIOO
    @digitalmechanik nein, auch so funktioniert es nicht. wenn du inhalte von datenpunkten in einer formel berücksichtigen willst, dann musst du diese in variable laden. genau so wie du es mit hm-rpc... nach wert gemacht hast. du darfst hier auch mehrere anweisungen mit strichpunkt getrennt aneinander reihen. aber für deine konkrete lösung würde ich das nicht machen, da es besser ist in die widgets möglichst nur einfache logik einzubauen, da es sonst nicht mehr lesbar ist, daher hier ein kleines experiment kopier dir die folgenden css anweisungen in den css reiter in vis auf der rechten seite. achte darauf, das im css reiter projekt ausgewählt ist und du die evtl vorhandene inhalte beim kopieren nicht löschst .red { background-image: url("https://upload.wikimedia.org/wikipedia/commons/7/7f/Red-ff0000.png"); } .yellow { background-image: url("https://upload.wikimedia.org/wikipedia/commons/a/a1/Pure_yellow_screen.png"); } .green { background-image: url("https://upload.wikimedia.org/wikipedia/commons/d/d5/Green_Gradient.png"); } lege einen neuen Datenpunkt an vom typ numerisch und trage dort 1 ein lege ein neues html widget an rechts bei html trägst du mal test ein (ist nur, das wir das widget auch wieder finden als größe trägst du bei width und heigth 64px ein im Abschnitt "general" der widget einstellungen bei CSS Class trägst du das folgende aus dem kasten ein. den datenpunktnamen 0_userdata.0.test.test_11 ersetzt du durch deinen frisch angelegten von oben. {wert:0_userdata.0.test.test_11;wert==0?"red":wert==1?"yellow":wert==2?"green":""} dann gehst du in vis in den runtime modus und das widget müsste gelb sein wenn du den datenpunkt änderst, dann müsste es automatisch die jeweilig andere farbe annehmen. (ich habe bei den bildern welche rausgesucht die einfach den farben entsprechen. du kannst natürlcih auch x beliebige bilder nehmen. auch welche, die in vis gespeichert sind oder du dort hochgeladen hast. an diesem beispiel siehst du, das wir die komplizierten dinge (urls in css anweisungen) dort haben, wo sie hingehören-> css anweisungen und per logik nur noch den klassenname ändern. die css klassennamen kannst du nennen wie du willst, musst die halt dann auch in der formel anpassen.
  • Wie kann ich ein Script mit scheduler starten

    3
    0 Votes
    3 Posts
    259 Views
    M
    @oliverio said in Wie kann ich ein Script mit scheduler starten: schedule('*/2 * * * *',()=>{ Funktioniert! Vielen Dank
  • Entwicklungsumgebung für Script Entwicklung?

    19
    0 Votes
    19 Posts
    2k Views
    liv-in-skyL
    @ticaki manchmal ist es ganz gut anstatt im forum direkt in google mit dem ersten wort iobroker zu suchen z.b. "iobroker entwicklungsumgebung" EDIT: ich weiß nicht, ob es bei diesem thema so ist
  • Date an schedule übergeben

    24
    0 Votes
    24 Posts
    883 Views
    G
    @oliverio Danke für deine Hilfe. Wie weiter oben schon geschrieben, habe ich es bereits (genau so) hinbekommen.... Problem war auch eher die falsche Verwendung es callbacks. Grüße Giraffe
  • [gelöst] Objektdaten ändern

    3
    0 Votes
    3 Posts
    308 Views
    Ro75R
    @paul53 sagte in Objektdaten ändern: extendObject(id, {common: {type: 'string'}}); Danke @paul53 , das war/ist ja einfach. Ro75.
  • JavaScript für Sayit Adapter

    7
    0 Votes
    7 Posts
    414 Views
    paul53P
    @maxtor62 sagte: Kommt auch immer "Das Küchenfenster ist zu" Hast recht. Setze eine Klammer: const idSayIt = "sayit.0.tts.text"; const idGarage = "0_userdata.0.Haus.Garagentor"; on(idGarage, function (dp) { // 0 = "offen", 1 = "zu" setState (idSayIt, "100;Achtung Warnung! Garagentor ist " + (dp.state.val ? "zu" : "offen")); });
  • JSON Tabelle in Intervallen befüllen

    3
    0 Votes
    3 Posts
    275 Views
    F
    @hansanaut schau dir mal den Adapter statistics an. Der macht das (die Durchschnittswerte für die Kalenderwoche, Monat und Jahr...) automatisch.
  • Script um shellyplus und das addon dazu auszulesen (mqtt)

    19
    5
    0 Votes
    19 Posts
    2k Views
    A
    @ticaki Werte wieder da :-) .... Vielen Dank .... die Antwort war min. 1 Kasten Bier wert
  • Temperatur Hysterese bei If Verschachtelung

    8
    0 Votes
    8 Posts
    703 Views
    D
    @ticaki said in Temperatur Hysterese bei If Verschachtelung: @diamand2k22 let istAn = getState('heizung oder was auch immer').val if (FC >= 80) { // netzdienlich // 5 ,6, 7, 8, 9,10,11, 12, 13, 14, 15, 16 17, 18 Uhr if (SOC < 25) { Laden_Mit = [0, 0, 0, 6, 6, 6, 6, 12, 12, 24, 24, 30, 36, 100]; } else {// hier ist in deinem Skript ein Fehler die else greift immer Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100]; } // hier hab ich das else deshalb entfernt if (FC >= 40 && PufferTemp > (istAn ? 50 : 55) ) { istAn = true // verteilen Laden_Mit = [0, 0, 0, 6, 12, 12, 12, 12, 12, 18, 18, 24, 36, 100]; } else if (FC >= 40 && PufferTemp < (!istAn ? 50 : 55)) { istAn = false Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 24, 24, 24, 30, 36, 100]; } else if (FC < 40 && PufferTemp > (istAn ? 50 : 55)) { istAn = true // Hamstern Laden_Mit = [100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100]; } else if (FC < 40 && PufferTemp < (!istAn ? 50 : 55)) { // Pufferspeicher laden istAn = false Laden_Mit = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; } } // hier dann heizung schalten oder datenpunkt setzten der beim nächsten durchlauf gelesen wird. Ich verstehe es aber nicht ganz. Was schaltet da die Heizung an? @ticaki die Heizung ist kein separater Datenpunkt! Es wird im Skript einfach die Ladeleistung des Akkus herabgesetzt (in den Klammern und somit zieht der Heizstab den PV Überschuss weg. Leider gibt es bei dem Gen24 Wechelrichter keinen Datenpunkt in der Modbus Schnittstelle um die Priorisierung zu ändern, somit muss ich die Ladeleistung des Akkus drosseln, damit der Heizstab (hängt am Ohmpilot) mehr Überschuss bekommt!
  • PV Überschussladen - Nach 5 Minuten

    4
    0 Votes
    4 Posts
    484 Views
    M
    @paul53 said in PV Überschussladen - Nach 5 Minuten: @malz1902 sagte: PV Überschussladen für Warmwasser Enthält der Trigger-Datenpunkt den PV-Überschuss (Netz-Einspeisung) oder die PV-Leistung des WR? Im ersten Fall muss die Hysterese etwas größer sein als die Leistungsaufnahme der WW-Heizung. Im zweiten Fall sollte auch eine (kleine) Hysterese verwendet werden. das kann ich mir aussuchen, habe beide Werte Habe mir dein 2. Beisspiel genommen und etwas angepasst. Danke Stand wirklich vol aufm schlauch
  • Werte aus Smartmeter Adapter in Excel exportieren

    45
    0 Votes
    45 Posts
    8k Views
    OliverIOO
    @huhie Es ist relativ egal wo die Datei liegt, sofern der User iobroker dort schreiben darf. Ich glaube, weiß es nicht genau, das die Angabe nur eines Dateinamens direkt in /opt/iobroker schreibt. Besser wäre in /opt/iobroker/iobroker-data/files Zu schreiben. Um sicher zu gehen einfach den Dateinamen direkt mit einem absoluten Pfad angeben.
  • Adapter restart wenn bestimmter Fehler im Log

    36
    0 Votes
    36 Posts
    4k Views
    bahnuhrB
    @homoran sagte in Adapter restart wenn bestimmter Fehler im Log: und die Fehlermeldung kann vom hm-rpc für cuxd kommen, der cuxd nicht gefunden hat, weil deaktiviert. ja, das gibt Sinn
  • [erledigt, nicht gelöst] Bild von Webcam lokal speichern

    10
    0 Votes
    10 Posts
    378 Views
    ?
    @boronsbruder Danke, ich schau' mir das mal an - soweit ich es verstehe
  • [Gelöst] Lösung für Bilder für VIS verfügbar machen

    1
    1 Votes
    1 Posts
    194 Views
    No one has replied
  • In Objektübersicht eine Spalte mit Aktor-"Type" anzeigen

    17
    1
    0 Votes
    17 Posts
    978 Views
    D
    @paul53 Das wäre nur sinnvoll, wenn ich für eine Statusabfrage der Fenster den FK zusätzlich nutzen möchte. D.h. extrem ausgedrückt, wenn der FR nur gedreht auf offen oder gekippt steht, aber das Fenster nur angelehnt ist, dann würde hier eine Meldung rausgehen. D.h. Achtung, Fensterriegel offen, obwohl Fenster optisch zu.. so in der Art. Aber das möchte ich später mit in der Alarmkonfiguration einbinden wenn z.B. das Haus verlassen wird. Derzeit soll es nur eine Statusanzeige werden.
  • awtrix alexa2 reminder anzeigen

    3
    0 Votes
    3 Posts
    279 Views
    S
    @paul53 Vielen Dank!!!
  • SQL-Adapter: Wert in ts_number statt ts_string

    8
    0 Votes
    8 Posts
    613 Views
    OliverIOO
    @haus-automatisierung ja mag sein das es anwendungsszenarien gibt, aber im beschriebenen fall mit ts: Date.now(), ?
  • CCU3 Zeichenkette Systemvariable

    8
    0 Votes
    8 Posts
    627 Views
    MalleRalleM
    Ich habe das mal anders versucht. Ich erstelle den String mit dem Zeilenumbruch erstmal in einen eigenen Datenpunkt auf dem IoBroker. Dann schreibe ich 2 Sekunden später diesen Wert in die Systemvariable der CCU. So geht es nun... Wieder Stunden meines Lebens Futsch
  • [Vorlage] upnp Media Player

    javascript template
    21
    1 Votes
    21 Posts
    2k Views
    J
    @jey-cee Habe zuerst den Player nicht erhalten, da dachte ich das muss über die fritzbox gesteuert werden. Nach einem neustart des adapters habe ich jetzt doch den Player. [image: 1692113703678-hmt600.jpg] Wenn ich nun über die erstellen Buttons von dem script den player steuern möchte passiert folgendes: 1. javascript.0 2023-08-15 17:30:44.299 warn at Object.<anonymous> (script.js.upnp:81:25) javascript.0 2023-08-15 17:30:44.298 warn getState "upnp.0.HMT_600.MediaRenderer.RenderingControl.Mute" not found (3) Wenn ich den Volume Down button anklicke passiert nichts Wenn ich den Volume Up Button anklicke dann wirds stumm, wobei das "Mute" Logo nicht auf dem Display des Geräts angezeigt wird. Erst wenn ich mit der Fernbedienung die Lautstärke ändere kommt der Ton wieder Wenn ich unter MediaControl auf Pause klicke dann unterbricht die Widergabe für ~1 Sekunde
  • (gelöst) Datenpunkte per RESTful API senden

    47
    0 Votes
    47 Posts
    2k Views
    JoJo58J
    @paul53 @ticaki Moin Zusammen, nur eine Info für euch. Das Script hat mir keine Ruhe gelassen, ich wollte es verbessern. Ich habe dann eine KI gefragt, was man verbessern könnte und das kam dabei heraus. Wahrscheinlich habt ihr noch andere Ideen, aber ich finde es schon mal gut, brauche nur die Variablen anpassen. const axios = require("axios"); // Constante für Quell und Zieldatenpunkte const sourceDP = 'logparser.0.filters.Homematic.json'; const targetDP = '0_userdata.0.LP_JSON.HM_JSON'; // Constante zum Senden an die andere ioBroker Instanz const targetIp = '192.168.1.14:8087'; const targetDp = '0_userdata.0.LogParser_Raspi4.HomeMatic.json'; // Clean and Copy JSON Data function cleanAndCopyJson() { const jsonNew = getState(sourceDP).val.replace(/<[^>]+>/g, ''); setState(targetDP, jsonNew); } // Send JSON Data to Another ioBroker Instance async function sendJsonToOtherInstance() { try { const jsonToSend = getState(targetDP).val; const response = await axios.post( `http://${targetIp}/setValueFromBody/${targetDp}`, jsonToSend, { headers: { "Content-Type": 'application/json' } } ); console.log('Logparser Daten erfolgreich gesendet:', response.data); } catch (error) { console.error('Fehler beim Senden der Logparser Daten:', error.message); } } // Main function function main() { cleanAndCopyJson(); sendJsonToOtherInstance(); } // Run the main function main(); Gruß Johannes

587

Online

32.8k

Users

82.7k

Topics

1.3m

Posts