NEWS
Script - Wöchentl. Löschen von Videos (Ring-Klingelanlage)
-
@habi989: So mache ich es: Blockly Export
https://forum.iobroker.net/topic/51396/ring-adapter-snapshot-auf-share-oder-deaktivieren/4?_=1645179751876 -
@agria4800 said in Script - Wöchentl. Löschen von Videos (Ring-Klingelanlage):
Hi,
das sieht ja mega aus, wäre genau das, was ich suche, aber selbst nicht im Stande bin zu erstellen. Vielen Dank schonmal dafür!
Ich habe ein paar Fragen zu deinen Skripten.
- bzgl. erstes Skript, welches die Snaphot und Doorbell Ordner löscht und wieder neu erstellt:
der erste Block, steure 0_userdata.0.RINGCAM.ZAHLER mit 0
was macht dieser Befehl? (die anderen Blöcke verstehe ich soweit.)
- Das Skript, welches Bild und Video für die VIS zur Verfügung stellt.
Das erstellst du einen Datenpunkt. Wie muss ich das machen? Das muss ich ja machen, bevor ich das Skript aktiviere richtig?
Und was macht das Skript genau? Es erstellt etwas in dem Userdata Ordner, sobald Ring ne neue Datei erstellt?
- Das JS Skript für den VIS Ordner.
Ich habe bislang noch keine Skripte in meine VIS eingebaut.
Muss ich das einfach im VIS unter der VIEW rechts unter dem Reiter Skripte einfügen?
-
JS Skript für die letzten 30 Tage, genau das gleiche, wo kopiere ich das hin?
-
Kurze Frage zur VIS:
Wie unterscheiden sich die Zahlen direkt über und unter dem Videoimage zu den kleineren Zahlen die ganz unten sind.
Ich weiß, das sind viele Fragen. Falls du mir die alle beantworten kannst wäre ich sehr dankbar.
Echt Super, dass du den Code zur Verfügung stellst.
Grüße Jonas
- bzgl. erstes Skript, welches die Snaphot und Doorbell Ordner löscht und wieder neu erstellt:
-
@habi989 sagte in Script - Wöchentl. Löschen von Videos (Ring-Klingelanlage):
@agria4800 said in Script - Wöchentl. Löschen von Videos (Ring-Klingelanlage):
Hi,
das sieht ja mega aus, wäre genau das, was ich suche, aber selbst nicht im Stande bin zu erstellen. Vielen Dank schonmal dafür!
Ich habe ein paar Fragen zu deinen Skripten.
- bzgl. erstes Skript, welches die Snaphot und Doorbell Ordner löscht und wieder neu erstellt:
der erste Block, steure 0_userdata.0.RINGCAM.ZAHLER mit 0
Hier wird jeden Morgen um 0Uhr der Zähler genullt, Zähler gemeint als Video Zähler pro Tag
was macht dieser Befehl? (die anderen Blöcke verstehe ich soweit.)
- Das Skript, welches Bild und Video für die VIS zur Verfügung stellt.
Das erstellst du einen Datenpunkt. Wie muss ich das machen? Das muss ich ja machen, bevor ich das Skript aktiviere richtig?
Im ersten Script ist ausgegraut die Erstellung der beiden DP vorhanden, einfach Baustein einmalig aktivieren, Script einmal ausführen und dann wird der DP erstellt!
Und was macht das Skript genau? Es erstellt etwas in dem Userdata Ordner, sobald Ring ne neue Datei erstellt?
Diese DP nehme ich, um Bild/Video in den Vis Ordner zu transportieren- Das JS Skript für den VIS Ordner.
Ich habe bislang noch keine Skripte in meine VIS eingebaut.
Muss ich das einfach im VIS unter der VIEW rechts unter dem Reiter Skripte einfügen?
Nein, ist kein Script für die VIS, bitte alle in iobroker Skripte einfügen
4. JS Skript für die letzten 30 Tage, genau das gleiche, wo kopiere ich das hin?
Nein, ist kein Script für die VIS, bitte alle in iobroker Skripte einfügen --> nicht 30 Tage, das sollen 30 Clips aus wählbar machen
5. Kurze Frage zur VIS:Wie unterscheiden sich die Zahlen direkt über und unter dem Videoimage zu den kleineren Zahlen die ganz unten sind.
**das ist nur ne weitere Leiste (21-40), die ich nicht nutze, so viele Clips werden dann doch nicht erstellt **
Ich weiß, das sind viele Fragen. Falls du mir die alle beantworten kannst wäre ich sehr dankbar.Echt Super, dass du den Code zur Verfügung stellst.
gerneIch hoffe, du kannst damit was anfangen, leider habe ich sehr viele Scripte zu der Ring Doorbell, da ich viel testen musste....und daher manchmal die Logik / Reihenfolge so nicht gleich nachvollziehbar war...
Grüße Jonas
- bzgl. erstes Skript, welches die Snaphot und Doorbell Ordner löscht und wieder neu erstellt:
-
ich vermutel mal Du verwendest einen RaspberryPi.
Ich habe das über einen CRON Job gelöst. Zwar auf einen NAS aber sollte im RaspberryPi analog sein. Einfach mal Googeln, da gibt es massenhaft anleitungen im Internet.Andreas
-
Danke für die Auskünfte.
Bei diesem Script habe ich leider noch ein Problem:
//+++++++++++ Script Snapshot ++++++++++++++ on({id: '0_userdata.0.RINGCAM.VIS.PicID', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; await wait(100); var request = require('request'); var fs = require('fs'); var ring = getState('0_userdata.0.RINGCAM.VIS.PicID').val; console.log("RING-Bild erzeugt:ID1 " + ring); const body = fs.readFileSync('/opt/iobroker/iobroker-data/ring_0/snapshot/' + getState('0_userdata.0.RINGCAM.VIS.PicID').val); // const body = fs.readFileSync('/opt/iobroker/iobroker-data/ring_0/snapshot/' + ring); writeFile("vis.0", "/RING/LAST_PIC.jpg", body); }); //+++++++++++ Script Livestream ++++++++++++++ on({id: '0_userdata.0.RINGCAM.VIS.ClipID', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; await wait(100); var request = require('request'); var fs = require('fs'); var ring1 = getState('0_userdata.0.RINGCAM.VIS.ClipID').val; console.log("RING-Video erzeugt: " + ring1); const body1 = fs.readFileSync('/opt/iobroker/iobroker-data/ring_0/snapshot/' + getState('0_userdata.0.RINGCAM.VIS.ClipID').val); // const body1 = fs.readFileSync('/opt/iobroker/iobroker-data/ring_0/snapshot/' + ring1); writeFile("vis.0", "/RING/LAST_CLIP.mp4", body1); }); //*/
Hier in diesem Bild siehst du es.
DU hast wahrscheinlich unter vis.0 den Ordner RING erstellt? Oder etwas anderes? Wie kann ich diesen Fehler beheben oder was steckt dahinter?
Bei dem Script für die letzten 30 Tage:
var my_1, my_2, my_3, my_4, my_5, my_6, my_7, my_8, my_9, my_10, my_11, my_12, my_13, my_14, my_15, my_16, my_17, my_18, my_19, my_20, my_21, my_22, my_23, my_24, my_25, my_26, my_27, my_28, my_29, my_30; on({id: '0_userdata.0.RINGCAM.VIS.Trigger-Videoselection', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; my_1 = getState("0_userdata.0.RINGCAM.History.Video-Nr_1").val; my_2 = getState("0_userdata.0.RINGCAM.History.Video-Nr_2").val; my_3 = getState("0_userdata.0.RINGCAM.History.Video-Nr_3").val; my_4 = getState("0_userdata.0.RINGCAM.History.Video-Nr_4").val; my_5 = getState("0_userdata.0.RINGCAM.History.Video-Nr_5").val; my_6 = getState("0_userdata.0.RINGCAM.History.Video-Nr_6").val; my_7 = getState("0_userdata.0.RINGCAM.History.Video-Nr_7").val; my_8 = getState("0_userdata.0.RINGCAM.History.Video-Nr_8").val; my_9 = getState("0_userdata.0.RINGCAM.History.Video-Nr_9").val; my_10 = getState("0_userdata.0.RINGCAM.History.Video-Nr_10").val; my_11 = getState("0_userdata.0.RINGCAM.History.Video-Nr_11").val; my_12 = getState("0_userdata.0.RINGCAM.History.Video-Nr_12").val; my_13 = getState("0_userdata.0.RINGCAM.History.Video-Nr_13").val; my_14 = getState("0_userdata.0.RINGCAM.History.Video-Nr_14").val; my_15 = getState("0_userdata.0.RINGCAM.History.Video-Nr_15").val; my_16 = getState("0_userdata.0.RINGCAM.History.Video-Nr_16").val; my_17 = getState("0_userdata.0.RINGCAM.History.Video-Nr_17").val; my_18 = getState("0_userdata.0.RINGCAM.History.Video-Nr_18").val; my_19 = getState("0_userdata.0.RINGCAM.History.Video-Nr_19").val; my_20 = getState("0_userdata.0.RINGCAM.History.Video-Nr_20").val; my_21 = getState("0_userdata.0.RINGCAM.History.Video-Nr_21").val; my_22 = getState("0_userdata.0.RINGCAM.History.Video-Nr_22").val; my_23 = getState("0_userdata.0.RINGCAM.History.Video-Nr_23").val; my_24 = getState("0_userdata.0.RINGCAM.History.Video-Nr_24").val; my_25 = getState("0_userdata.0.RINGCAM.History.Video-Nr_25").val; my_26 = getState("0_userdata.0.RINGCAM.History.Video-Nr_26").val; my_27 = getState("0_userdata.0.RINGCAM.History.Video-Nr_27").val; my_28 = getState("0_userdata.0.RINGCAM.History.Video-Nr_28").val; my_29 = getState("0_userdata.0.RINGCAM.History.Video-Nr_29").val; my_30 = getState("0_userdata.0.RINGCAM.History.Video-Nr_30").val; if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 1) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_1, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 2) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_2, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 3) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_3, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 4) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_4, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 5) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_5, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 6) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_6, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 7) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_7, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 8) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_8, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 9) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_9, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 10) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_10, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 11) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_11, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 12) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_12, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 13) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_13, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 14) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_14, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 15) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_15, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 16) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_16, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 17) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_17, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 18) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_18, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 19) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_19, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 20) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_20, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 21) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_21, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 22) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_22, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 23) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_23, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 24) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_24, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 25) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_25, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 26) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_26, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 27) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_27, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 28) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_28, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val ==29) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_29, 100, false); } if (getState("0_userdata.0.RINGCAM.VIS.Trigger-Videoselection").val == 30) { setStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection"/*Vis-Videoselection*/, my_30, 100, false); } });
Wie muss der Datenpunkt Trigger-VIdeoselection aussehen?
Also Zustandstyp (Zahl, Zeichenkette, Logikwert...?)
Rolle = (State)?Und du hast da wohl den Ordner History unter 0_userdata.0.RINGCAM erstellt. Darin wiederum die 30 Datenpunkte. Wie sehen die aus in Sachen (Zustandstyp und Rolle)?
Ich glaube mit diesem Angaben könnte es auch bei mir bald funktionieren.
Grüße
-
Kann sich sonst jemand diesen Fehler in Zeile 19 erklären?
Kann mir jemand vielleicht noch folgendes sagen
wie müsste ich den Datenpunkt Trigger-Videoselection anlegen?
Bei den Zeilen 7 ff. wird jeweils getstate(....Video-Nr_1) ausgeführt.
Handelt es sich bei Video-Nr_1 um einen Datenpunkt? Und hat jemand eine Idee wie der genau aussehen muss?
Weiter ab Zeile 42. Was bedeutet die Zeile 43 und der Punkt /Vis-Videoselection/?
Vielleicht hat ja jemand zu den Skripten ein paar Erklärungen für mich parat.
Vielen Dank!
-
Zum Fehler in Zeile 19 kann ich nur auf die Doku zu WriteFile verweisen:
https://nodejs.org/api/fs.html#fswritefilefile-data-options-callbackDir fehlt im Aufruf der 'callback' parameter - eine Funktion die aufgerufen wird wenn das schreiben beendet wurde, und aus der du erkennen kannst ob es erfolgreich war oder nicht.
Der Datenpunkt Trigger-Videoselection sollte eine Zahl sein, kein String.
Bei den Zeilen 7ff wird anscheinend der Dateiname der Videos gelesen. Die Datenpunkte sind also als "String" Anzulegen.
Der Eintrag
/*Vis-Videoselection*/
ist ein Kommentar der beim Erstellen des Blockly eingetragen wird und zur Darstellung im Blockly gehört. Auf den Code hat dieser Eintrag keine AuswirkungIn den Zeilen 42 bis 131 wird einer der Dateinamen der Videos aus der Liste oben in den Datenpunkt
0_userdata.0.RINGCAM.VIS.Vis-Videoselection
geschrieben, abhängig davon wie der Datenpunkt0_userdata.0.RINGCAM.VIS.Trigger-Videoselection
gesetzt ist.Ansonsten ist der Codein dem Skript für die letzten 30 Tage echt grausam.
Die 100+ Zeilen sollten sich auf das Folgende verkürzen lassen:
on({id: '0_userdata.0.RINGCAM.VIS.Trigger-Videoselection', change: "ne"}, async function (obj) { var value = obj.state.val; if (value >= 0 && value <= 30) { const newSelect = await getStateAsync('0_userdata.0.RINGCAM.History.Video-Nr_' + value) SetStateDelayed("0_userdata.0.RINGCAM.VIS.Vis-Videoselection", newSelect.val, 100, false); } });
-
Vielen Dank soweit für deine Hilfe.
Ich habe jetzt noch ein Problem mit diesem Skript:
//+++++++++++ Script Snapshot ++++++++++++++ on({id: '0_userdata.0.RINGCAM.VIS.PicID', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; await wait(100); var request = require('request'); var fs = require('fs'); var ring = getState('0_userdata.0.RINGCAM.VIS.PicID').val; console.log("RING-Bild erzeugt:ID1 " + ring); const body = fs.readFileSync('/opt/iobroker/iobroker-data/ring_0/snapshot/' + getState('0_userdata.0.RINGCAM.VIS.PicID').val); // const body = fs.readFileSync('/opt/iobroker/iobroker-data/ring_0/snapshot/' + ring); writeFile("vis.0", "/RING/LAST_PIC.jpg", body, (err) => { console.log(err);} ); }); //+++++++++++ Script Livestream ++++++++++++++ on({id: '0_userdata.0.RINGCAM.VIS.ClipID', change: "ne"}, async function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; await wait(100); var request = require('request'); var fs = require('fs'); var ring1 = getState('0_userdata.0.RINGCAM.VIS.ClipID').val; console.log("RING-Video erzeugt: " + ring1); const body1 = fs.readFileSync('/opt/iobroker/iobroker-data/ring_0/snapshot/' + getState('0_userdata.0.RINGCAM.VIS.ClipID').val); // const body1 = fs.readFileSync('/opt/iobroker/iobroker-data/ring_0/snapshot/' + ring1); writeFile("vis.0", "/RING/LAST_CLIP.mp4", body1, (err) => { console.log(err);} ); });
Ich habe versucht zu verstehen was es genau tut. Vielleicht kann mich da jemand erleuchten.
Ich habe die Zeile 19 um einen Callback erweitertet. Jedoch verstehe ich nicht was mit der Zeile genau bezweckt werden soll. Das Skript soll ja etwas für die VIS zur Verfügung stellen.
Im vis.0 Ordner befinden sich bei mir die verschiedenen VIS Projekte. Was macht das Skript genau in diesem Ordner? Kann das so überhaupt funktionieren mit dem Wert ''/RING/LAST_PIC.jpg''?
-
@habi989 : sorry für dir späte Antwort...
Vorerst nochmal ein paar Worte... Ich weiss, das meine geteilten Scripte nicht optimal sind... ich habe mir diese nach und nach zusammen gebastelt gemäß dem Prinzip try and error... Falls also jemand hier überarbeiten möchte, kann er das gerne tun und teilen, vielleicht kann das dann auch mal im Adapter integriert werden... ich würde mich freuenzurück zu deinem Punkt: das Script erstellt im vis.0/Ring/ ein Foto (und zwar das letzte gemachte Foto vom Adapter)mit dem Namen Last_Pic, welches per Widget in der VIS dargestellt wird....
hier das passende Widget dazu:Wo klemmt es den noch ?
-
@habi989 sagte in Script - Wöchentl. Löschen von Videos (Ring-Klingelanlage):
Danke für die Auskünfte.
Bei diesem Script habe ich leider noch ein Problem:
Hier in diesem Bild siehst du es.DU hast wahrscheinlich unter vis.0 den Ordner RING erstellt? Oder etwas anderes? Wie kann ich diesen Fehler beheben oder was steckt dahinter?
Korrekt, siehe Beitrag vorher
Bei dem Script für die letzten 30 Tage:
Wie muss der Datenpunkt Trigger-VIdeoselection aussehen?
Also Zustandstyp (Zahl, Zeichenkette, Logikwert...?)
Rolle = (State)?
ZeichenketteUnd du hast da wohl den Ordner History unter 0_userdata.0.RINGCAM erstellt. Darin wiederum die 30 Datenpunkte. Wie sehen die aus in Sachen (Zustandstyp und Rolle)?
Zeichenkette
Ich glaube mit diesem Angaben könnte es auch bei mir bald funktionieren.So sieht es bei mir aus
Grüße
-
@agria4800 hallo, funktioniert die Vis bei dir noch? ich bekomme einfach keine Auflistung hin! bzw. eigentlich sehe ich gar kein video in meiner Vis!
Leider bin der absolute Anfänger was Scripte angeht, komme mehr aus der Siemens SPS ecke, hoffe du kannst mir irgendwie helfen. -
@chrislenz Aufgrund einiger Chat anfragen hier mal meine Scripte zu dem Ring Adapter V3.XX
Für die Experten unter uns: Ich bin kein Experte und habe es mir per try & error zusammen gebaut, da ist mit Sicherheit jede Menge Potenzial zum verbessern vorhanden, was gerne getan und gepostet werden darf !
Edit: Es kann sein, das noch ein paar Datenpunkte händig angelegt werden müssen, teils habe ich es aber in den Scripten mit drin....
Blockly Export_1
JS Export_2
JS Export_3
JS Export_4
Blockly Export_5
-
und hier noch die VIS View dazu:
Export Vis View
-
@agria4800
hast du noch die Einstellungen im Ring Adapter für mich? -
@ceel: na klar
-
@agria4800
wenn du jetzt noch die Icons hast ^^Ich habe noch das Problem das wenn ich Trigger-Videoselection auf 0 (also last) stelle ich bei Vis-Videoselection ein "null" im Datenpunkt stehen habe.
Edit:
Ihr müsst bei Clip_Counter und bei ZAEHLER history.0 aktivieren!