NEWS
S7 Adapter Temperatur Siemens Logo
-
@Elektroniker86 sagte in S7 Adapter Temperatur Siemens Logo:
Danke, das ging ja mal wieder blitzschnell, vielen Dank dafür.
Aber wo muss das Script hin ? Unter common oder global?
Wenn ich es im Ordner LOGO unter common speichere und starte dann kommen Fehler. Siehe Screenshots.O.K. hat sich erledigt, habs selbst hinbekommen, das Script musste in das Script von ganz oben hinzugefügt werden.
Aber es wird nicht angezeigt ob es sich jetzt um eine Minus Temperatur dreht oder nicht.
Kann man irgendwie ein Minus (-) hinzufügen?
-
@Elektroniker86 sagte
dann kommen Fehler.
Das ist nicht das komlplette Skript, da ich davon ausgegangen bin, dass Du schon ein Skript zur Umrechnung verwendest und es nur anpassen musst.
Es fehlt die Deklaration und Zuweisung der Datenpunkt-IDs am Anfang des Skripts:const idS7Temp = 's7.2.DBs.DB1.AM2'; // Datenpunkt-ID von LOGO const idTemp = 'LOGO.Außentemperatur'; // Datenpunkt unter javascript.0
-
@Elektroniker86 sagte
Aber es wird nicht angezeigt ob es sich jetzt um eine Minus Temperatur dreht oder nicht.
Mein Fehler, habe es im Skript korrigiert.
-
@paul53 sagte in S7 Adapter Temperatur Siemens Logo:
function S7Celsius(val) { if(val > 32768) val = val - 65536; setState(idTemp, val / 10, true); } on(idS7Temp, function(dp) { // Wertänderung S7Celsius(dp.state.val); }); // Skriptstart S7Celsius(getState(idS7Temp).val);
Ja, das scripten ist nicht so meine Spezialität, ich habs aber dann doch noch gecheckt.....
Einfach Klasse, es funktioniert .........
Respekt!!!! Wirklich, vielen lieben Dank für die promte Hilfe. -
Guten Abend,
ich muss das hier nochmal hoch holen. Was muss im Script geändert werden damit bei den Temperaturen ein Komma statt ein Punkt angezeigt wird und bei ganzen Temperaturen z.B 5,0°C statt 5°C angezeigt wird? Kann mir dabei vielleicht jemand unter die Arme greifen?
Vielen Dank im Voraus!!!
const idS7Temp = 's7.2.DBs.DB1.AM05'; // Datenpunkt-ID vom S7 eingeben ! const idTemp = 'LOGO.Temperaturen.Außentemperatur'; // neuer Datenpunkt unter javascript.0 createState(idTemp, 0, {type: 'number', unit: '°C', role: 'value.temperature'}); // Neuen Datenpunkt erzeugen on(idS7Temp, function(dp) { // Wertänderung setState(idTemp, dp.state.val / 10, true); }); // Skriptstart setState(idTemp, getState(idS7Temp).val / 10, true); function S7Celsius(val) { if(val > 32768) val = val - 65536; setState(idTemp, val / 10, true); } on(idS7Temp, function(dp) { // Wertänderung S7Celsius(dp.state.val); }); // Skriptstart S7Celsius(getState(idS7Temp).val);
-
@elektroniker86 sagte: ein Komma statt ein Punkt angezeigt wird
const idS7Temp = 's7.2.DBs.DB1.AM05'; // Datenpunkt-ID vom S7 eingeben ! const idTemp = '0_userdata.0.LOGO.Temperaturen.Außentemperatur'; // neuer Datenpunkt createState(idTemp, '0,0', {type: 'string', role: 'state'}); // Neuen Datenpunkt erzeugen function S7Celsius(val) { if(val > 32768) val = val - 65536; setState(idTemp, (val / 10).toFixed(1).replace('.', ',') + ' °C', true); } on(idS7Temp, function(dp) { // Wertänderung S7Celsius(dp.state.val); }); // Skriptstart S7Celsius(getState(idS7Temp).val);
-
@paul53
Hi, vielen Dank für die, wie immer schnelle Hilfe !
Geil, funktioniert! Ich habe ein neues Skript angelegt mit Außenbeleuchtung Norden. Aber mir wird zwei mal °C angezeigt.Hab ich da was falsch gemacht?
-
@elektroniker86 sagte: mir wird zwei mal °C angezeigt.
Ändere den Datenpunkt-Typ in "string" ohne "unit". Oder lösche ihn, dann wird er mit createState() bei Skriptstart richtig erzeugt.
-
@paul53
Vielen Dank !!! Funktioniert einwandfrei!!!Daumen hoch!
-
Hi, ich habe leider noch ein Problem.
Seit dem ich das Script wie oben mit Komma usw. geändert habe werden im odometer Widget und im vis-material-advanced - list temp Widget die Temperaturwerte nicht mehr angezeigt. Wenn ich den alten Datenpunkt vom alten Script her nehme dann wird der Wert angezeigt.Im basic-number widget und im vis-inventwo -universal switch widget als Binding funktionieren die neuen Datenpunkte. Kann man das auch irgendwie fixen damit man die Datenpunkte für alle Widgets verwenden kann?
Vielen Dank vorab!
-
@elektroniker86 sagte: werden im odometer Widget und im vis-material-advanced - list temp Widget die Temperaturwerte nicht mehr angezeigt.
Die Widgets benötigen wahrscheinlich Zahlen und können mit dem String nichts anfangen.
-
Nun gut, ist dann wenigstens möglich das alte Skript (number) so umzubauen damit 0.0 angezeigt wird ? Mit dem Punkt kann ich leben wenn ich auf das Komma verzichten muss.... Oder geht das auch nicht ?
-
@elektroniker86 sagte: möglich das alte Skript (number) so umzubauen damit 0.0 angezeigt wird ?
Nein, Zahlen werden nicht mit einer 0 nach dem Punkt angezeigt. Das Problem für das Widget ist der String.
-
-
Kann mir jemand sagen wo da der Fehler liegt ?
-
@lucky51179 ,
du brauchst kein Skript mehr um das umzurechnen. Nimm den Alias-Manager und du kannst eine Regel bei Alias read-Funktion hinzufügen.
Alias-ID ist dein S7-Logo Objekt
Alias Read-Function ist deine Regel -> val/10 (d.h. dein Logo-Objekt wird durch 10 geteilt)
-
@lucky51179 sagte: wo da der Fehler liegt ?
Schau mal in den Tab "Log", in dem weitere Informationen stehen. Hast Du das Skript zum ersten mal gestartet? Dann existiert der Datenpunkt zu idTemp noch nicht.
-
@paul53 meinst du hier
-
@lucky51179 sagte: meinst du hier
Ja. Wo sind die Warnungen?
-
@paul53 jetzt sind keine mehr da aber die Temperatur wird nicht anders dargestellt