Skip to content

JavaScript

Hilfe für Skripterstellung mit JavaScript

2.5k Themen 49.1k Beiträge

NEWS

  • JETZT als TimeStamp - wie?

    javascript
    3
    0 Stimmen
    3 Beiträge
    352 Aufrufe
    etvE
    @gargano danke dir! Liebe Grüße Tom
  • [gelöst] Systemzeit abfragen und speichern

    3
    0 Stimmen
    3 Beiträge
    313 Aufrufe
    paul53P
    @ben1983 sagte: Wie speichert man denn die Systemzeit in einem zuvor erzeugten State? Mit setState(id, val, true), wobei man als val einen formatierten String übergeben kann.
  • [gelöst] Skripte zyklisch aufrufen

    7
    0 Stimmen
    7 Beiträge
    329 Aufrufe
    htreckslerH
    @ben1983 Einfach in deinem ersten Eintrag den Betreff editieren. Ein [gelöst] voranstellen
  • Hue Motion Sensor mit iobroker übersteuern

    12
    0 Stimmen
    12 Beiträge
    1k Aufrufe
    SchmakusS
    @gammler2003 https://github.com/Schmakus/ioBroker.LightOnOffPresence
  • [Vorlage] Lichtscript "LightOnOffPresence"

    javascript template
    1
    0 Stimmen
    1 Beiträge
    432 Aufrufe
    Niemand hat geantwortet
  • Entwicklung in Visual Studio Code

    15
    0 Stimmen
    15 Beiträge
    2k Aufrufe
    AlCalzoneA
    @greatemu sagte in Entwicklung in Visual Studio Code: Ist Remote SSH eine Erweiterung? [image: 1616666003415-ac2eb3ab-7f39-4ff9-882d-0ac099a28b2d-grafik.png] ¯\_(ツ)_/¯
  • Anfänger benötigt diverse Hilfestellungen

    10
    1
    0 Stimmen
    10 Beiträge
    541 Aufrufe
    AsgothianA
    @bambam89 Viel einfacher: let NeedsVodka = [ "Wodka Sunrise", "long Island Icetea" ] let NeedsCola = [ "whateverneedsthatstuff", "whatevqrelseneedsthatstuff"] on({id:"Flasche_Vodka_leer", change:"ne"}, function(obj) { if (obj.state.value) { allowedList = RemoveCocktails(allowedList, NeedsVodka); } else { allowedList = AddCocktails(allowedList, NeedsVodka); } on({id:"Flasche_Cola_leer", change:"ne"}, function(obj) { if (obj.state.value) { allowedList = RemoveCocktails(allowedList, NeedsCola); } else { allowedList = AddCocktails(allowedList, NeedsCola); } }); A.
  • Alle Scripte aus common gelöscht

    24
    0 Stimmen
    24 Beiträge
    2k Aufrufe
    HomoranH
    @greatemu sagte in Alle Scripte aus common gelöscht: Gibt es noch einen Input zum best practice bei den Ordner für Scripte? nur dass man den global nur dann nutzen sollte, wenn man genau weiß was man damit tut!
  • Scripte im Verzeichnis verschwunden, laufen aber weiter

    16
    0 Stimmen
    16 Beiträge
    2k Aufrufe
    heinhanH
    @massenbach Danke für den Tipp, danach war die Bildschirm Anzeige wieder da.
  • Fehlermeldung im Log Speedtest Script

    2
    0 Stimmen
    2 Beiträge
    175 Aufrufe
    UncleSamU
    @djsirius Bitte Code und Fehlermeldungen in Code Tags (</> oben in der Toolbar). Soll ich mir jetzt im Ernst das Skript im Forum raussuchen?! Bitte poste das ganze Skript hier, sonst haben wir keine Chance, rauszufinden, was schief geht. Grundsätzlich würde ich empfehlen, einen Adapter zu installieren anstatt Skripte aus dem Forum zu kopieren, denn Adapter werden gepflegt und erweitert, das Skript musst du selber im Griff haben. Wie wäre es mit vodafone-speedtest oder web-speedy? Was gibt denn der Befehl aus, wenn du den manuell auf der Konsole ausführst? speed-test --json --verbose
  • subscribe dynamisch erstellen?

    3
    0 Stimmen
    3 Beiträge
    272 Aufrufe
    paul53P
    @dominic-reber sagte: Aus einer Funktion raus kann ich ja alle Shellys abrufen und dann auch vergleichen, ob einer neu ist: Der $Selector erkennt keine neuen Datenpunkte, da er den Puffer der Javascript-Instanz verwendet. Eine Subscription mit RegExp erfasst neue Datenpunkte. on({id: /^shelly\..+\.Relay0\.Energy$/}, function(dp) { if(!ids.includes(dp.id)) { // DP ist neu ids.push(dp.id); ... } }); Siehe hier
  • $ - Selector liefert keine Werte mehr.

    3
    0 Stimmen
    3 Beiträge
    393 Aufrufe
    W
    Danke. 5.0.15 versuche ich dann mal. Nach genauerer Suche hier im Forum und ein paar Experimenten habe ich eine Lösung für mich gefunden auch mit 5.0.14: $("*.STATE|.POWER|.LEVEL(functions=Licht)").each(function(id,i) { log(i + ": " +id); }); das Funktioniert. Allerdings frage mich schon länger: Warum ist im Selektor keine richtige RegEx möglich? Das würde vieles vereinfachen.
  • [gelöst] Azimut und Elevation vom Wiffi spinnen

    12
    1
    0 Stimmen
    12 Beiträge
    356 Aufrufe
    HomoranH
    @paul53 sagte in [gelöst] Azimut und Elevation vom Wiffi spinnen: Läuft das Skript in Instanz 0? nein, in Instanz .1 trotzdem wird einiges in .0 angelegt - und auf dem Testrechner lief es früher in .0
  • Personenerkennung: Aufruf Linux Script mit Parameter

    javascript
    39
    7
    0 Stimmen
    39 Beiträge
    4k Aufrufe
    coyoteC
    @hansi1234 Nein, nur Frigate. ZM war mir zu langsam, zumindest habe ich es nicht hinbekommen, dass es bei mir schnell genug reagiert
  • evohome2mqtt Temperatur einstellen

    19
    0 Stimmen
    19 Beiträge
    578 Aufrufe
    S
    @mickym Ich schaue am Wochenende weiter - jetzt ist erstmal gut damit :-) . Vielen Dank für Deine Hilfe und Mühe auf jeden Fall.
  • Verzeichnis auf neue Datei(en) überwachen

    16
    0 Stimmen
    16 Beiträge
    1k Aufrufe
    mickymM
    @doubled sagte in Verzeichnis auf neue Datei(en) überwachen: Ich finde es trotzdem schade das der ioBroker das nicht per Adapter kann ... Kann er doch ;) ;) ;) - der Adapter kann halt noch bisschen mehr. ;) Im Übrigen ist es eine der Stärken des iobroker Systems sich nicht auf eine Logikmaschine, ein Datenbank System festlegen zu müssen. Ich verstehe es auch nicht, warum man iobroker mit Javascript etc. gleichsetzt. Im Übrigen basiert Node Red ebenfalls auf Javascript. Letztlich bietet iobroker eine Datenbank und es gibt verschiedene Logikmaschinen, diese Datenpunkte zu modifizieren, ob direkt mit Javascript, NodeRed, Blockly, Typescript oder was auch immer man bevorzugt. Natürlich kannst Du selbst einen Adapter zur Verzeichnisüberwachung schreiben, um letztlich nur einen Datenpunkt zu triggern.
  • [gelöst] URL per Telegram versenden

    7
    0 Stimmen
    7 Beiträge
    1k Aufrufe
    dslraserD
    @mpenno sagte in [gelöst] URL per Telegram versenden: Jetzt habe ich festgestellt, dass sich der Link von den Surveilance Station leider ändert, wie oft weiß ich nicht. Nicht unbedingt, den kannst Du "fest" einstellen. https://forum.iobroker.net/post/548299
  • variable auslesen und in eine andere variable schreiben

    7
    0 Stimmen
    7 Beiträge
    966 Aufrufe
    F
    @paul53 Es läuft wieder.... habe den Datenpunkt mal gelöscht und neu erstellt und siehe da es geht wieder!! SUPER, nochmals vielen lieben dank!
  • setState's in Funktionen

    javascript
    16
    0 Stimmen
    16 Beiträge
    2k Aufrufe
    AlCalzoneA
    @hanss check!
  • [Skript]RKI-Impfquotenmonitoring Deutschland incl. B-länder

    31
    1
    0 Stimmen
    31 Beiträge
    3k Aufrufe
    sissiwupS
    Hi, hier mal die aktuelle Version: getImpfquoten.py: import openpyxl from pathlib import Path import requests import os,sys import csv from datetime import datetime url = "https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Daten/Impfquotenmonitoring.xlsx;jsessionid=159D4550C958EDFAA9A49921FA132A35.internet122?__blob=publicationFile" # url = "https://www.rki.de/DE/Content/InfAZ/N/Neuartiges_Coronavirus/Daten/Impfquotenmonitoring.xlsx" r = requests.get(url, allow_redirects=True) open(r'/var/skripte/data/Impfquotenmonitoring.xlsx', 'wb').write(r.content) xlsx_file = Path(os.getcwd(), r'/var/skripte/data/Impfquotenmonitoring.xlsx') wb_obj = openpyxl.load_workbook(xlsx_file,data_only=True) datakt=datetime.now() dat="--" sheet=wb_obj.active for sht in wb_obj: print(sht.title) try: dat = datetime.strptime(sht.title[-8:],'%d.%m.%y') sheet=sht except: pass print("Selected: "+sheet.title) # print(dat) if dat=="--": print("Datum nicht ermittelbar!") sys.exit(99) #sheet = wb_obj.active sum = 0 anzbl = 0 titel = 0 headline = None with open(r'/var/skripte/data/Impfquotenmonitoring.csv', 'w', newline="") as f: c = csv.writer(f) for row in sheet.iter_rows(min_row=1,max_col=25,max_row=19, values_only=True): try: sum=sum+row[2] nrow=[str(dat.date()),str(datakt),str(datetime.timestamp(dat))] anzbl=anzbl+1 row = [x for x in row if x is not None] nrow.extend(list(row)) if titel==0: titel=1 headline = [x for x in headline if x is not None] trow=['Datenstand','Dat-Import', 'Datenstand-Unix'] trow.extend(list(headline)) print(trow) c.writerow(trow) print(nrow) c.writerow(nrow) except: if headline==None: headline=list(row) else: for i in range(0,len(headline)): if row[i] is not None: if headline[i] is None: headline[i]=row[i] else: headline[i]=headline[i]+"."+row[i] if anzbl!=16: print("Es sollten 16 Bundesländer sein:",anzbl) sys.exit(99) if len(headline)!=15: print("Anzahl Spalten sollte 15 sein:",len(headline)) sys.exit(99) print("Gesamtzahl der Impfungen in Deutschland: " + str(sum)) print("Datenstand: " + str(dat) + " Sheetname:" + str(sheet.title)) getImpfquoten.sh: #!/bin/bash NOW=`date +"%d.%m.%g %H:%M.%S"` NOWDAT=`date +"%u"` USER=usermysql PASS=passwordmysql echo "Starte Abgleich: $NOW" rm /var/skripte/data/Impfquotenmonitoring.csv rm /var/skripte/data/Impfquotenmonitoring.xlsx rm /var/skripte/data/cor_impfung.csv python3.9 -u /var/skripte/getImpfquoten.py if [ $? -eq 99 ] then echo "Fehler bei Datenabholung" cp /var/skripte/data/Impfquotenmonitoring.xlsx /var/skripte/data/Impquotenmonitoring_$NOWDAT.xlsx.backup cp /var/skripte/data/Impfquotenmonitoring.csv /var/skripte/data/Impfquotenmonitoring_$NOWDAT.csv.backup exit 99 fi cp /var/skripte/data/Impfquotenmonitoring.csv /var/skripte/data/Impfquotenmonitoring_$NOWDAT.csv.backup cp /var/skripte/data/Impfquotenmonitoring.csv /var/skripte/data/cor_impfung.csv echo "Starte Import $NOW" mysqlimport --fields-terminated-by=, --ignore-lines=1 --verbose --ignore --local -u $USER -p$PASS iobroker /var/skripte/data/cor_impfung.csv mysql -u $USER -p$PASS iobroker -e "DELETE i1.* from cor_impfung i1 inner join cor_impfung i2 on (i1.datenstand=i2.datenstand and i1.rs=i2.rs and i1.import_datum<i2.import_datum)" mysql -u $USER -p$PASS iobroker -e "UPDATE cor_impfung inner join cor_bundesland on rs=lan_ew_ags SET Bundesland=lan_ew_gen" Tabelle: CREATE TABLE `cor_impfung` ( `datenstand` date NOT NULL DEFAULT current_timestamp(), `import_datum` datetime NOT NULL DEFAULT current_timestamp(), `datenstand_unix` bigint(20) NOT NULL DEFAULT 0, `RS` int(11) NOT NULL DEFAULT -1, `Bundesland` mediumtext COLLATE utf8_bin NOT NULL DEFAULT '\'"??"\'', `Gesamtimpfungen` int(11) NOT NULL DEFAULT 0, `Impfungen` int(11) DEFAULT 0, `BioNTech` int(11) NOT NULL DEFAULT 0, `Moderna` int(11) NOT NULL DEFAULT 0, `AstraZeneca` int(11) NOT NULL DEFAULT 0, `Differenz_Vortag` int(11) DEFAULT 0, `Impfquote` double NOT NULL DEFAULT 0, `Zweitimpfung` int(11) NOT NULL DEFAULT 0, `BioNTech_2` int(11) NOT NULL DEFAULT 0, `Moderna_2` int(11) NOT NULL DEFAULT 0, `AstraZeneca_2` int(11) NOT NULL DEFAULT 0, `Zweit_Differenz_Vortag` int(11) NOT NULL DEFAULT 0, `Impfquote_2` double NOT NULL DEFAULT 0 ) ENGINE=Aria DEFAULT CHARSET=utf8 COLLATE=utf8_bin; Index: ALTER TABLE `cor_impfung` ADD PRIMARY KEY (`datenstand`,`Bundesland`(24),`import_datum`), ADD KEY `datenstand-unix` (`datenstand_unix`,`Bundesland`(24)); COMMIT; Erklärung siehe oben bei meinem letzten Post

548

Online

32.7k

Benutzer

82.5k

Themen

1.3m

Beiträge