Skip to content

Skripten / Logik

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

16.5k Themen 213.2k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    A
    @psrelax sagte in E3DC Hauskraftwerk steuern: Um 2 Uhr läuft die normale Nachladung von ChargeControl. Ok die vergesse ich immer :-) Es sieht so aus, als ob dein Batterie SOC um mehr als 2% schwankt, wenn das Laden gestoppt wird. Um 2:08 Uhr wurden die 25% erreicht und das Laden wird gestoppt. Bis 3:08 Uhr steigt dein SOC bis auf 28% ohne zu laden. Das ist dann 1% über der Hysterese von 2% und das Entladen wird wieder freigegeben. Um 3:23 Uhr ist dein Batterie SOC auf 24% das ist 1% unter der Hysterese und das Entladen wird wieder gestoppt. Ab diesem Zeitpunkt sinkt dein Batterie SOC ohne dass entladen wird bis auf 20% und bleibt dann stabil auf 20% bis 10:19 Uhr. Das bedeutet dein Batterie SOC schwankt um ca. 4% und die Hysterese gleicht aber nur 2% aus, was bei dir zu diesem ein und ausschalten der Ladeleistung Batterie führt. Was helfen kann ist die Batterie komplett zu entladen und dann auf 100% aufzuladen, sodass die Kalibrierung des BMS (Battery Management System) eventuell erfolgt. Bin mir aber nicht sicher, ob das nur durch den Trainingsmodus möglich ist. Alternativ kann natürlich auch die Hysterese erhöht werden.
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    K
    Damit die Steuerung über das Widget funktioniert, habe ich parallel das Script aus https://forum.iobroker.net/post/1205844 implementiert. Über Widget funktioniert es damit - nur nicht wenn ich LOCK_TARGET_LEVEL per Script setze :(
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    S
    welche Palette hast du installiert, damit du den "AND" Baustein hast?
  • Object.<anonymous> finden?

    51
    2
    0 Stimmen
    51 Beiträge
    4k Aufrufe
    paul53P
    @sms sagte: Das hier ist dann eine ODER Verknüpfung? Es ist eine ODER-Verknüpfung der Flanken - nicht der Werte.
  • JavaSkripts - Versionierung und BackUp Skript

    11
    0 Stimmen
    11 Beiträge
    1k Aufrufe
    U
    @bloop danke!
  • Speedtest-Skript von kreyenborg.koeln für Kabel-Gigabit

    391
    1
    9 Stimmen
    391 Beiträge
    80k Aufrufe
    SKBS
    @manuxi Japp. Stand in einer Mitteilung zu Corona Zeiten, wo viele im HO waren.
  • Mr Pure Salzelektrolyse

    3
    0 Stimmen
    3 Beiträge
    357 Aufrufe
    E
    @samson71 gute Idee, leider findet der Adapter nichts
  • Fritzbox Rufnummer stumm schalten

    5
    0 Stimmen
    5 Beiträge
    889 Aufrufe
    skvarelS
    Hast du die mal den 'Asterisk' Adapter angesehen? Damit könnte es klappen. EDIT: ... vergiss meinen Tipp! Das wird damit auch nicht klappen. Der Adapter ist für ausgehende Anrufe.
  • Shelly->ioBroker->Zigbee/Ikea Reaktionszeit

    4
    0 Stimmen
    4 Beiträge
    347 Aufrufe
    H
    @asgothian Danke! das wars schon, jetzt funktioniert es wie es soll.
  • [gelöst] Wert von Objekt hat einen Klammerwert - wie trennen

    6
    2
    0 Stimmen
    6 Beiträge
    339 Aufrufe
    paul53P
    @peter-c sagte: Konvertierungsfunktion des Alias Schreibkonvertierung: val >= 40 ? Math.round(val / 5 - 8) : 0
  • [Vorlage] todoist.com To-Do-Listen Script für VIS

    Verschoben
    130
    2
    0 Stimmen
    130 Beiträge
    25k Aufrufe
    B
    Hallo zusammen, ich habe das Skript vom Beitrag über diesem am laufen. Dazu habe ich eine Frage. Hier [image: 1744790339875-ordner1.jpg] erscheinen Werte in der "Ordnerzeile". Ist das so richtig? Das habe ich bei keinem anderen Ordner so gesehen. Hier so wie das Skript ist. [image: 1744790435641-skript1.jpg] Grüße
  • Pool Solaranlage

    8
    0 Stimmen
    8 Beiträge
    598 Aufrufe
    D
    @homoran danke, Wie du die Sensoren zur Temperaturmessung am Rohr hast, mit Tauchhülse gelöst? Und was nutzt du um die Sensoren auszuwerten? Wegen der Sonneneinstahlung hab ich nicht gefunden hier im Forum, für einen Bau des Sensor.
  • Solaredge SE8K mit Batterie

    25
    0 Stimmen
    25 Beiträge
    2k Aufrufe
    paul53P
    @marvintherobot sagte: ich hätt gern gewusst wanns echt viel überschuss + voller Batterie gibt Es genügt der Überschuss (Einspeiseleistung), da die Batterie-Ladeleistung darin bereits berücksichtigt ist. Prinzip: [image: 1744288219953-blockly_temp.jpg] @marvintherobot sagte in Solaredge SE8K mit Batterie: sinnvoll die derzeitge Produktion auszurechnen. Wofür ist die PV-Produktion interessant? Wichtig für die Ersparnis ist nur die WR-Produktion I_AC_Energy_WH, da die Speicherung DC-seitig erfolgt.
  • ioBroker - Awtrix 3 (light) Adapter - Laufschrift

    11
    2
    0 Stimmen
    11 Beiträge
    740 Aufrufe
    R
    @haus-automatisierung Der steht schon auf SLIDE [image: 1744108091366-8e23e90c-dbf6-4241-a3b2-03c23424e6b2-image.png]
  • Telegram Video mit Preview Bild oder Timestamp für Standbild

    2
    0 Stimmen
    2 Beiträge
    241 Aufrufe
    Jey CeeJ
    @eistee sagte in Telegram Video mit Preview Bild oder Timestamp für Standbild: Ich hätte aber zu dem Video Passend auch ein Foto der erkannten Person und auch einen Timestamp vom Video an dem die Person erkannt wurde. Dann schick dir das doch als eigene Nachricht. Die Telegram API bietet zwar die Möglichkeit ein Vorschaubild mit zu schicken, das scheint im Adapter nicht integriert zu sein.
  • [gelöst] javascript in Blockly ausführen

    12
    0 Stimmen
    12 Beiträge
    870 Aufrufe
    RaspiUserR
    @codierknecht sagte in [gelöst] javascript in Blockly ausführen: Das ist nur ein Beispiel ... hab's jetzt verstanden ... :+1:
  • JSONATA Filter auf json array

    25
    1
    0 Stimmen
    25 Beiträge
    2k Aufrufe
    ___manalishi_
    @mickym said in JSONATA Filter auf json array: hst man kommt Vielen Dank für deinen Support Habe mit sed die Ausgabedatei geparsed und dann mit cat ausgeben und als result im Blockly geparsed [image: 1743281477184-ed82cbd2-c993-4488-a5ce-55413607577a-image.png]
  • Excelfile nach iobroker

    9
    0 Stimmen
    9 Beiträge
    679 Aufrufe
    OliverIOO
    @snopy_16 sagte in Excelfile nach iobroker: Ich könnte es zur Not zu csv konvertieren die vin @haus-automatisierung gepostete bibliothek ist sehr gut. wenn du aber mit scripten nicht so firm bist, dann lieber nach csv konvertieren. das geht dann auch mit einfachsten mitteln zum lesen und verarbeiten. wenn man das noch weiter (mit skripten) vereinfachen möchte, dann hilft auch diese bibliothek weiter. da sind dann auch schon ausreichende beispiele vorhanden. im zweifel hilft chatgpt https://www.npmjs.com/package/csv-parser
  • [gelöst] Generischen Datenpunkt via Blockly (openHasp)

    10
    1
    0 Stimmen
    10 Beiträge
    936 Aufrufe
    oberfraggerO
    Kurzes Update. Das Script & Blockly scheint fertig. Damit kann ich nun recht generisch Datenpunkte für openHasp-Displays erstellen bzw. für die diversen Buttons. @paul53 hat Starthilfe gegeben. Danke nochmal. Den Rest dann mit chatgpt beendet. Waren noch paar kleine Stolpersteine drin. Wenn ich auch passende Scripte fertig und alles getestet habe, dann schreibe ich mal eine Anleitung für openHasp. [image: 1743115882532-cbed5891-de9b-4916-8db9-71066cb384d4-grafik.png] <xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="t]mHQ2(O[i~,~{Z1[+%!">button_id</variable> <variable id="mPT5a/ZZM;ltIo{jt;]v">buttonfunktion</variable> <variable id="O5fjg~@mC^kh:.OT[4tI">speicherpfad</variable> <variable id="r2OFNb5JSoE#g];#4K3Y">pretopic</variable> <variable id="5gtZow7y)14]oqV=GyN|">hostname</variable> <variable id="`wmra-.jA.[a)@dMnQN7">type</variable> </variables> <block type="procedures_defcustomnoreturn" id="@UFkkX.yv%])Ff}F2;|j" x="238" y="163"> <mutation statements="false"> <arg name="button_id" varid="t]mHQ2(O[i~,~{Z1[+%!"></arg> <arg name="buttonfunktion" varid="mPT5a/ZZM;ltIo{jt;]v"></arg> <arg name="speicherpfad" varid="O5fjg~@mC^kh:.OT[4tI"></arg> <arg name="pretopic" varid="r2OFNb5JSoE#g];#4K3Y"></arg> <arg name="hostname" varid="5gtZow7y)14]oqV=GyN|"></arg> <arg name="type" varid="`wmra-.jA.[a)@dMnQN7"></arg> </mutation> <field name="NAME">paul53</field> <field name="SCRIPT">Y29uc3QgY3JlYXRlVG9waWMgPSAoYWN0aW9uKSA9PiBgJHtwcmV0b3BpY30vJHtob3N0bmFtZX0vJHthY3Rpb259LyR7YnV0dG9uX2lkfWA7DQpjb25zdCBjcmVhdGVJRCA9IChhY3Rpb24pID0+IGAwX3VzZXJkYXRhLjAuJHtzcGVpY2hlcnBmYWR9LiR7aG9zdG5hbWV9LiR7YWN0aW9ufS4ke2J1dHRvbl9pZH1gOw0KDQpjb25zdCBzdGF0ZXRvcGljID0gY3JlYXRlVG9waWMoJ3N0YXRlJyk7DQpjb25zdCBjb21tYW5kdG9waWMgPSBjcmVhdGVUb3BpYygnY29tbWFuZCcpICsgKHR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ251bWJlcicgPyAnLnZhbCcgOiAnJyk7DQoNCmNvbnN0IHN0YXRlX2lkID0gY3JlYXRlSUQoJ3N0YXRlJyk7DQpjb25zdCBjb21tYW5kX2lkID0gY3JlYXRlSUQoJ2NvbW1hbmQnKTsNCg0KLy8gU3RhbmRhcmR3ZXJ0IGbDvHIgZGVmDQpjb25zdCBnZXREZWZhdWx0VmFsdWUgPSAodCkgPT4gKHQgPT09ICdudW1iZXInID8gMCA6IHQgPT09ICdib29sZWFuJyA/IGZhbHNlIDogJycpOw0KDQpjb25zdCBzdGF0ZV9jb21tb24gPSB7DQogICAgbmFtZTogYnV0dG9uZnVua3Rpb24sDQogICAgcm9sZTogInN0YXRlIiwNCiAgICB0eXBlOiAic3RyaW5nIiwNCiAgICByZWFkOiB0cnVlLA0KICAgIHdyaXRlOiBmYWxzZSwNCiAgICBkZWY6ICcnLA0KICAgIGN1c3RvbTogew0KICAgICAgICAibXF0dC1jbGllbnQuMCI6IHsgZW5hYmxlZDogdHJ1ZSwgcHVibGlzaDogZmFsc2UsIHN1YnNjcmliZTogdHJ1ZSwgdG9waWM6IHN0YXRldG9waWMgfQ0KICAgIH0NCn07DQoNCmNvbnN0IGNvbW1hbmRfY29tbW9uID0gew0KICAgIG5hbWU6IGJ1dHRvbmZ1bmt0aW9uLA0KICAgIHJvbGU6ICJzdGF0ZSIsDQogICAgdHlwZSwNCiAgICByZWFkOiB0cnVlLA0KICAgIHdyaXRlOiB0cnVlLA0KICAgIGRlZjogZ2V0RGVmYXVsdFZhbHVlKHR5cGUpLA0KICAgIGN1c3RvbTogew0KICAgICAgICAibXF0dC1jbGllbnQuMCI6IHsgZW5hYmxlZDogdHJ1ZSwgcHVibGlzaDogdHJ1ZSwgc3Vic2NyaWJlOiBmYWxzZSwgdG9waWM6IGNvbW1hbmR0b3BpYyB9DQogICAgfQ0KfTsNCg0KY3JlYXRlU3RhdGUoc3RhdGVfaWQsICcnLCBzdGF0ZV9jb21tb24pOw0KY3JlYXRlU3RhdGUoY29tbWFuZF9pZCwgZ2V0RGVmYXVsdFZhbHVlKHR5cGUpLCBjb21tYW5kX2NvbW1vbik7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="comment" id="$RQ:rwIC/g6xPOV+A1Ss" x="237" y="212"> <field name="COMMENT">Adapter: mqtt-client.0&amp;#10;button_id: Den Button angeben&amp;#10;buttonfunktion: Was soll durch den Button ausgelöst werden&amp;#10;speicherpfad: hinter userdata_0.0&amp;#10;pretopic: siehe mqtt-setting des hasp devices&amp;#10;hostname des hasp-devices&amp;#10;typ des Buttons (bool, string, number)</field> <next> <block type="on" id="V?L;5Nr}OxT)BT]~^#Jc"> <field name="OID">0_userdata.0.test</field> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="controls_if" id="0),V(RPzI|S:?3|,7W]!"> <value name="IF0"> <block type="on_source" id="3z%t2xus(;q~YGyZh}SN"> <field name="ATTR">state.val</field> </block> </value> <statement name="DO0"> <block type="procedures_callcustomnoreturn" id="=gS(Blp?cNt|^k7%1[k%"> <mutation name="paul53"> <arg name="button_id"></arg> <arg name="buttonfunktion"></arg> <arg name="speicherpfad"></arg> <arg name="pretopic"></arg> <arg name="hostname"></arg> <arg name="type"></arg> </mutation> <value name="ARG0"> <block type="text" id="E~iotn9wF;Let({7%t2E"> <field name="TEXT">p1b7</field> </block> </value> <value name="ARG1"> <block type="text" id="FAP!atq!u%WrvXl^R2ts"> <field name="TEXT">Lampe Ecke Helligkeit</field> </block> </value> <value name="ARG2"> <block type="text" id="umuTAU1|5gG|sv/$[=6a"> <field name="TEXT">Büro</field> </block> </value> <value name="ARG3"> <block type="text" id="f{Ht+f@lncWjnT7EMvY7"> <field name="TEXT">hasp</field> </block> </value> <value name="ARG4"> <block type="text" id="Jr_osU%Iy/{u}}oP=Os3"> <field name="TEXT">buero_sofa</field> </block> </value> <value name="ARG5"> <block type="text" id="||K]*]sydI[Jq6;7:*O|"> <field name="TEXT">number</field> </block> </value> <next> <block type="control" id="I@W^acpevmW@{].wv{Cb"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.test</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="S=gT0|j);wtj0Jsc1Maa"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </statement> </block> </statement> </block> </next> </block> </xml> const createTopic = (action) => `${pretopic}/${hostname}/${action}/${button_id}`; const createID = (action) => `0_userdata.0.${speicherpfad}.${hostname}.${action}.${button_id}`; const statetopic = createTopic('state'); const commandtopic = createTopic('command') + (type.toLowerCase() === 'number' ? '.val' : ''); const state_id = createID('state'); const command_id = createID('command'); // Standardwert für def const getDefaultValue = (t) => (t === 'number' ? 0 : t === 'boolean' ? false : ''); const state_common = { name: buttonfunktion, role: "state", type: "string", read: true, write: false, def: '', custom: { "mqtt-client.0": { enabled: true, publish: false, subscribe: true, topic: statetopic } } }; const command_common = { name: buttonfunktion, role: "state", type, read: true, write: true, def: getDefaultValue(type), custom: { "mqtt-client.0": { enabled: true, publish: true, subscribe: false, topic: commandtopic } } }; createState(state_id, '', state_common); createState(command_id, getDefaultValue(type), command_common);
  • Adapter aus github (versionsnummer)

    14
    0 Stimmen
    14 Beiträge
    1k Aufrufe
    OliverIOO
    @accessburn also, ich bin auch nicht der meinung, das man hier mit adapter von gihub viel automatisieren sollte. aber jeder kann ja selbst machen was er will und in der lage ist. um der eigentlichen frage mal eine mögliche lösung anbieten zu können könnte ich folgendes vorschlagen: versionsnummern von adaptern in iobroker: diese sind im systemdatenpunkt in den objektdaten gepeichert. also für den admin adapter bspw system.adapter.admin.0 wenn du in den expertenmodus gehst, und dir über die datenpunkt-settings den inhalt anschaust, dann findest du alle informationen, die auch in io-package.json des adapters gespeichert sind. Änderung am adapter auf github wie auch schon erwähnt, eine versionsnummer muss nicht unbedingt geändert werden, wenn nicht auch nach npm gepublisht wird oder in ein iobroker repository (wo npm aber auch die voraussetzung ist) allerdings besitzt gihub ja ebenfalls eine api, über die alle verfügbaren informationen abgerufen werden können, wie zb auch zeitpunkt des letzten commits. über die stabilität des adapters auf basis des letzten commits sagt das natürlich nichts aus. Release auf npm Auch npm hat eine api oder kann über den npm lokal abgerufen werden. eine suche nach einem adapter kann dann bspw so aussehen npm search iobroker.skiinfo --json als ergebnis kommt dann hier auch komfortabel ein json heraus was gut weiter verarbeitet werden kann,
  • Ungefähre Watt anzeige über RGB LED

    5
    0 Stimmen
    5 Beiträge
    414 Aufrufe
    David G.D
    @homoran Das stimmt natürlich. Man erkennt aber, wenn man auf die Lampe schaut trotzdem ob es ein rot, orange oder grün ist. Nur, dass man noch Tendenzen ableiten kann. Schleichende Änderungen sind schwer zu erkennen, die meisten Lampen sind zudem ja noch recht grob was die Farben angeht. EDIT Habe das ganze bei den Akkuständen meiner Zigbeegeräte genutzt. Finde man erkennt schon gut, in welche Richtung was geht. [image: 1742808430437-screenshot_20250324_102600_fully-kiosk-browser.jpg] Edit 2 Man könnte sich die Prozente ja auch auf 10er oder 20er Schritte Runden. Dann baut man sich was mehr Stufen ein.
  • OT-Therm Werte in Datenpunkte / Open Therm / JSON

    javascript
    1
    0 Stimmen
    1 Beiträge
    158 Aufrufe
    Niemand hat geantwortet
  • Auslesen und Filtern der autobahn.api von bund.dev

    30
    1
    0 Stimmen
    30 Beiträge
    3k Aufrufe
    R
    @bahnuhr Ja, aber vielleicht will man die wieder aktivieren. Die Kameras wurden März 2022 wegen dem Ukrainekrieg abgeschaltet um es den Russen nicht zu leicht zu machen Truppenbewegungen in Deutschland zu erkennen.

360

Online

32.6k

Benutzer

82.1k

Themen

1.3m

Beiträge