HomeMatic CCU2 bei ELV bestellen

Fehler im Script aber Script testen geht ? ! ? ! ?

Fehler in Firmware und WebUI & Workarounds

Werbung


Fehler im Script aber Script testen geht ? ! ? ! ?

Beitragvon joni-blue » 31.05.2015, 15:26

Hallo Forum Team,

so hier ist mein folgendes problem was ich anscheinend bei alle IF Scripten mit einer ODER abfrage habe!

in diesem Fenster ( Script bearbeiten ) habe ich ein voll Funktionsfähiges Script
welches aber einen Fehler angibt bei der ODER Bedingung. Wenn man auf Fehlerprüfung klickt
31-5-2015 16-15-31 Bildschirmausschnitt.png


in diesem Fenster ( Skript testen ) ist genau das gleiche Skript und wenn ich auf Ausführen klicke
macht es die Ausgabe: ausschalten was ja auch richtig ist.
Bildschirmausschnitt.png


Jetzt das ganze Problem an der Sache.

wenn das Programm gespeichert wird Funktionier es wieder nicht weil ja angeblich da ein Fehler dran ist.

Wenn ich nun die CCU neu starte dann Funktioniert es wieder 1 Tag.

was kann ich nun tun um das zu beheben?

vielen Dank für eure Anteilnahme
Reboot tut gut ! ! !
Benutzeravatar
joni-blue
 
Beiträge: 951
Registriert: 04.01.2012, 12:20
Wohnort: Hannover

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitragvon paul53 » 31.05.2015, 15:41

Das Semikolon gehört in die geschweifte Klammer:
Code: Alles auswählen
if (...) {WriteLine("ausschalten");}

Vielleicht funktioniert es dann :?:
Versionen: HM-CC-TC 2.1, HM-LC-Sw1 1.9, HM-CC-RT-DN 1.1, HM-MOD-RPI-PCB 1.2.1 (keine CCU)
paul53
 
Beiträge: 2353
Registriert: 26.04.2012, 19:42
Wohnort: Berlin

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitragvon joni-blue » 31.05.2015, 15:51

Starte grade neu, dann geht es erstmal wieder.
Nur was hat das dann mit einem Neustart zu tun?


Gesendet von iPhone mit Tapatalk
Reboot tut gut ! ! !
Benutzeravatar
joni-blue
 
Beiträge: 951
Registriert: 04.01.2012, 12:20
Wohnort: Hannover

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitragvon Giotto » 01.06.2015, 20:20

Hallo zusammen,

das ist leider ein altbekannter Fehler - alt ist hierbei wörtlich zu nehmen: den kenne ich schon aus CCU1-Zeiten und hat bisher alle Firmwareupdates inkl. CCU2 überlebt :x

Es scheint wohl ein Problem mit der Gesamtzahl der Variablen in der CCU zu sein, der sich beim testen und für ein paar Stunden/Tage nach einem Reboot nicht auswirkt! Dann ist der Cache/Speicher oder was auch immer wieder voll und weitere Scripte laufen nicht mehr. Auch wenn sie syntaktisch völlig korrekt sind.

Interessanterweise funktionieren diese Scripte beim Scripttest trotzdem einwandfrei. Das macht es ja so richtig gemein...

In deinem Testscript hier verbrauchst Du gleich 4 Variablen. Ist zwar aus Programmiersicht sehr sinnvoll (weil übersichtlicher und flexibler), aber bei einer Homematic-Zentrale "problematisch"...

Das hat mich die letzten Jahre schon mehrfach in den Wahnsinn getrieben, bis ich (glaub hier) den Tipp mit den zu vielen Variablen gelesen habe.

Seit dem nutze ich kaum noch lokale Variablen, sondern nutze oft direktzugriffe auf die Systemvariablen wie:
Code: Alles auswählen
if (system.Date("%u") == 0) { var x = dom.GetObject(('zz_Statusanzeige1TextA08')).State("So " # (dom.GetObject('zz_Statusanzeige1TextA08').Value())); }
-> Ist völlig unübersichtlich und daher fehlerträchtig. Aber läuft zuverlässig :lol:

Mein Tipp:
-> So wenig verschiedene lokale Variablen nutzen wie möglich (z.B. immer var x = )
-> Möglichst viel direkter Einsatz von Systemvariablen via dom.GetObject('SysVar')... anstelle von "richtigen" lokalen Variablen

Hat mich damals zwei Tage mit zig Stunden Änderungsarbeit gekostet, aber seit dem keine Probleme mehr mit irgendwann nicht laufenden Scripten...

ciao, Giotto
Giotto
 
Beiträge: 45
Registriert: 20.11.2011, 21:23

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitragvon joni-blue » 01.06.2015, 20:30

Ok, habe jetzt erstmal ein zwei riesen Skripte die Tage gelöscht und mal schauen ob es wieder kommt.

Falls ja dann nehme ich dein weg in Angriff.

Danke dir schon mal


Gesendet von iPhone mit Tapatalk
Reboot tut gut ! ! !
Benutzeravatar
joni-blue
 
Beiträge: 951
Registriert: 04.01.2012, 12:20
Wohnort: Hannover

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitragvon johnsn » 10.12.2015, 19:07

Hatte gerade das gleiche Problem (über eine Woche damit gekämpft) und einen Reboot der CCU2 versucht. Problem wurde vorläufig "behoben".
Falls jemand von EQ3 hier mitliest: Dieses Verhalten muss umbedingt behoben werden!!! Es kann nicht sein, dass ein unleserlicher und schlechter Programmierstil der Skripte die Lösung ist.

Wenn mich jetzt jemand fragen würde, ob HM ein Bastlersystem ist, ganz klares JA!
ioBroker & YAHM auf RPi3, MySQL auf NAS, 316 Kanäle in 64 Geräten.
johnsn
 
Beiträge: 28
Registriert: 18.08.2015, 07:53

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitragvon jmaus » 31.12.2015, 01:54

Hallo,

Giotto hat geschrieben:das ist leider ein altbekannter Fehler - alt ist hierbei wörtlich zu nehmen: den kenne ich schon aus CCU1-Zeiten und hat bisher alle Firmwareupdates inkl. CCU2 überlebt :x

Es scheint wohl ein Problem mit der Gesamtzahl der Variablen in der CCU zu sein, der sich beim testen und für ein paar Stunden/Tage nach einem Reboot nicht auswirkt! Dann ist der Cache/Speicher oder was auch immer wieder voll und weitere Scripte laufen nicht mehr. Auch wenn sie syntaktisch völlig korrekt sind.

Interessanterweise funktionieren diese Scripte beim Scripttest trotzdem einwandfrei. Das macht es ja so richtig gemein...


Auch ich bin in den letzten Tagen auf diesen Problem aufmerksam geworden, weil ich mir selbst noch einige WebUI-Programme geschrieben hatte und plötzlich dieses komische Verhalten aufgetreten ist das Programme die bisher ohne Probleme funktionierten nicht mehr korrekt ausgeführt wurden. Daraufhin habe ich die besagten Programme einmal von der "Fehlerprüfung" testen lassen und siehe da, es zeigten sich plötzlich komische Fehlermeldungen wie im ersten Beitrag dieses Artikels beschrieben.

Nach weiteren Tests konnte ich deine Anmerkungen nun komplett nachvollziehen und es scheint in der Tat wohl eine maximale Anzahl von frei definierbaren Variablennamen in einer CCU zu geben. Sobald man diese Anzahl dann einmal überschritten hat wird jede weitere neue Variablendefinition dazu führen das bei einer if() oder foreach(), etc. Abfrage es zu solchen Fehlermeldungen bei der "Fehlerprüfung" kommt auch wenn das 1:1 kopierte Programm im "Skript testen" Dialog aber problemlos durchläuft.

Nun könnte man gemeinhin denken, dass dies ggf. nur ein Problem der "Fehlerprüfung"-Funktion der CCU ist. Jedoch werden die Programme die hiervon betroffen sind leider auch nicht bei auslösen der Bedingung dann korrekt abgearbeitet. D.h. lediglich im "Skript testen" Dialog läuft das ganze wohl problemlos durch. Nutzt man die "Fehlerprüfung" Funktion bzw. kommt das besagte Programm zur automatischen Abarbeitung wird dieses in den selben Fehler rennen und somit nicht korrekt ausgeführt.

Giotto hat geschrieben:Mein Tipp:
-> So wenig verschiedene lokale Variablen nutzen wie möglich (z.B. immer var x = )
-> Möglichst viel direkter Einsatz von Systemvariablen via dom.GetObject('SysVar')... anstelle von "richtigen" lokalen Variablen


Wie du selbst richtig festgestellt hast können deine Tipps lediglich eine Notfallüberbrückung dieses Problems darstellen. Auch ich sehe hier eQ-3 in der Pflicht diesen offensichtlichen Bug zu eliminieren und dafür zu sorgen das man eine unendliche Anzahl von Variablen in einem Programm definieren kann oder zumindest eine gewisse freie Anzahl die auf das momentan ablaufende Programm begrenzt wird. Momentan sind anscheinend Variablennamen über Programme hinweg eineindeutig. D.h. eine Variable "i" in Programm1 und eine Variable "i" in Programm2 teilen sich in irgendeiner weise die gleiche Struktur.

Um dem Problem einmal etwas mehr auf den Grund zu gehen und die max. Anzahl herauszufinden habe ich einmal hier ein jungfräuliches RaspberryMatic-System aufgesetzt und mir einen Shell Skript generiert der eine definierte Anzahl von variablen anlegt bis man in besagten Problem rennt. Das damit generierte Programm sieht dann wie folgt aus:

Code: Alles auswählen
var i1=1; if(i1==1) { WriteLine(i1); }
var i2=2; if(i2==2) { WriteLine(i2); }
var i3=3; if(i3==3) { WriteLine(i3); }
var i4=4; if(i4==4) { WriteLine(i4); }
var i5=5; if(i5==5) { WriteLine(i5); }
var i6=6; if(i6==6) { WriteLine(i6); }
var i7=7; if(i7==7) { WriteLine(i7); }
var i8=8; if(i8==8) { WriteLine(i8); }
var i9=9; if(i9==9) { WriteLine(i9); }
var i10=10; if(i10==10) { WriteLine(i10); }
var i11=11; if(i11==11) { WriteLine(i11); }
var i12=12; if(i12==12) { WriteLine(i12); }
var i13=13; if(i13==13) { WriteLine(i13); }
var i14=14; if(i14==14) { WriteLine(i14); }
var i15=15; if(i15==15) { WriteLine(i15); }
var i16=16; if(i16==16) { WriteLine(i16); }
var i17=17; if(i17==17) { WriteLine(i17); }
var i18=18; if(i18==18) { WriteLine(i18); }
var i19=19; if(i19==19) { WriteLine(i19); }
var i20=20; if(i20==20) { WriteLine(i20); }
var i21=21; if(i21==21) { WriteLine(i21); }
var i22=22; if(i22==22) { WriteLine(i22); }
var i23=23; if(i23==23) { WriteLine(i23); }
var i24=24; if(i24==24) { WriteLine(i24); }
var i25=25; if(i25==25) { WriteLine(i25); }
var i26=26; if(i26==26) { WriteLine(i26); }
var i27=27; if(i27==27) { WriteLine(i27); }
var i28=28; if(i28==28) { WriteLine(i28); }
var i29=29; if(i29==29) { WriteLine(i29); }
var i30=30; if(i30==30) { WriteLine(i30); }
var i31=31; if(i31==31) { WriteLine(i31); }
var i32=32; if(i32==32) { WriteLine(i32); }
var i33=33; if(i33==33) { WriteLine(i33); }
var i34=34; if(i34==34) { WriteLine(i34); }
var i35=35; if(i35==35) { WriteLine(i35); }
var i36=36; if(i36==36) { WriteLine(i36); }
var i37=37; if(i37==37) { WriteLine(i37); }
var i38=38; if(i38==38) { WriteLine(i38); }
var i39=39; if(i39==39) { WriteLine(i39); }
var i40=40; if(i40==40) { WriteLine(i40); }
var i41=41; if(i41==41) { WriteLine(i41); }
var i42=42; if(i42==42) { WriteLine(i42); }
var i43=43; if(i43==43) { WriteLine(i43); }
var i44=44; if(i44==44) { WriteLine(i44); }
var i45=45; if(i45==45) { WriteLine(i45); }
var i46=46; if(i46==46) { WriteLine(i46); }
var i47=47; if(i47==47) { WriteLine(i47); }
var i48=48; if(i48==48) { WriteLine(i48); }
var i49=49; if(i49==49) { WriteLine(i49); }
var i50=50; if(i50==50) { WriteLine(i50); }
var i51=51; if(i51==51) { WriteLine(i51); }
var i52=52; if(i52==52) { WriteLine(i52); }
var i53=53; if(i53==53) { WriteLine(i53); }
var i54=54; if(i54==54) { WriteLine(i54); }
var i55=55; if(i55==55) { WriteLine(i55); }
var i56=56; if(i56==56) { WriteLine(i56); }
var i57=57; if(i57==57) { WriteLine(i57); }
var i58=58; if(i58==58) { WriteLine(i58); }
var i59=59; if(i59==59) { WriteLine(i59); }
var i60=60; if(i60==60) { WriteLine(i60); }
var i61=61; if(i61==61) { WriteLine(i61); }
var i62=62; if(i62==62) { WriteLine(i62); }
var i63=63; if(i63==63) { WriteLine(i63); }
var i64=64; if(i64==64) { WriteLine(i64); }
var i65=65; if(i65==65) { WriteLine(i65); }
var i66=66; if(i66==66) { WriteLine(i66); }
var i67=67; if(i67==67) { WriteLine(i67); }
var i68=68; if(i68==68) { WriteLine(i68); }
var i69=69; if(i69==69) { WriteLine(i69); }
var i70=70; if(i70==70) { WriteLine(i70); }
var i71=71; if(i71==71) { WriteLine(i71); }
var i72=72; if(i72==72) { WriteLine(i72); }
var i73=73; if(i73==73) { WriteLine(i73); }
var i74=74; if(i74==74) { WriteLine(i74); }
var i75=75; if(i75==75) { WriteLine(i75); }
var i76=76; if(i76==76) { WriteLine(i76); }
var i77=77; if(i77==77) { WriteLine(i77); }
var i78=78; if(i78==78) { WriteLine(i78); }
var i79=79; if(i79==79) { WriteLine(i79); }
var i80=80; if(i80==80) { WriteLine(i80); }
var i81=81; if(i81==81) { WriteLine(i81); }
var i82=82; if(i82==82) { WriteLine(i82); }
var i83=83; if(i83==83) { WriteLine(i83); }
var i84=84; if(i84==84) { WriteLine(i84); }
var i85=85; if(i85==85) { WriteLine(i85); }
var i86=86; if(i86==86) { WriteLine(i86); }
var i87=87; if(i87==87) { WriteLine(i87); }
var i88=88; if(i88==88) { WriteLine(i88); }
var i89=89; if(i89==89) { WriteLine(i89); }
var i90=90; if(i90==90) { WriteLine(i90); }
var i91=91; if(i91==91) { WriteLine(i91); }
var i92=92; if(i92==92) { WriteLine(i92); }
var i93=93; if(i93==93) { WriteLine(i93); }
var i94=94; if(i94==94) { WriteLine(i94); }
var i95=95; if(i95==95) { WriteLine(i95); }
var i96=96; if(i96==96) { WriteLine(i96); }
var i97=97; if(i97==97) { WriteLine(i97); }
var i98=98; if(i98==98) { WriteLine(i98); }
var i99=99; if(i99==99) { WriteLine(i99); }
var i100=100; if(i100==100) { WriteLine(i100); }
var i101=101; if(i101==101) { WriteLine(i101); }
var i102=102; if(i102==102) { WriteLine(i102); }
var i103=103; if(i103==103) { WriteLine(i103); }
var i104=104; if(i104==104) { WriteLine(i104); }
var i105=105; if(i105==105) { WriteLine(i105); }
var i106=106; if(i106==106) { WriteLine(i106); }
var i107=107; if(i107==107) { WriteLine(i107); }
var i108=108; if(i108==108) { WriteLine(i108); }
var i109=109; if(i109==109) { WriteLine(i109); }
var i110=110; if(i110==110) { WriteLine(i110); }
var i111=111; if(i111==111) { WriteLine(i111); }
var i112=112; if(i112==112) { WriteLine(i112); }
var i113=113; if(i113==113) { WriteLine(i113); }
var i114=114; if(i114==114) { WriteLine(i114); }
var i115=115; if(i115==115) { WriteLine(i115); }
var i116=116; if(i116==116) { WriteLine(i116); }
var i117=117; if(i117==117) { WriteLine(i117); }
var i118=118; if(i118==118) { WriteLine(i118); }
var i119=119; if(i119==119) { WriteLine(i119); }
var i120=120; if(i120==120) { WriteLine(i120); }
var i121=121; if(i121==121) { WriteLine(i121); }
var i122=122; if(i122==122) { WriteLine(i122); }
var i123=123; if(i123==123) { WriteLine(i123); }
var i124=124; if(i124==124) { WriteLine(i124); }
var i125=125; if(i125==125) { WriteLine(i125); }
var i126=126; if(i126==126) { WriteLine(i126); }
var i127=127; if(i127==127) { WriteLine(i127); }
var i128=128; if(i128==128) { WriteLine(i128); }
var i129=129; if(i129==129) { WriteLine(i129); }
var i130=130; if(i130==130) { WriteLine(i130); }
var i131=131; if(i131==131) { WriteLine(i131); }
var i132=132; if(i132==132) { WriteLine(i132); }
var i133=133; if(i133==133) { WriteLine(i133); }
var i134=134; if(i134==134) { WriteLine(i134); }
var i135=135; if(i135==135) { WriteLine(i135); }
var i136=136; if(i136==136) { WriteLine(i136); }
var i137=137; if(i137==137) { WriteLine(i137); }
var i138=138; if(i138==138) { WriteLine(i138); }
var i139=139; if(i139==139) { WriteLine(i139); }
var i140=140; if(i140==140) { WriteLine(i140); }
var i141=141; if(i141==141) { WriteLine(i141); }
var i142=142; if(i142==142) { WriteLine(i142); }
var i143=143; if(i143==143) { WriteLine(i143); }
var i144=144; if(i144==144) { WriteLine(i144); }
var i145=145; if(i145==145) { WriteLine(i145); }
var i146=146; if(i146==146) { WriteLine(i146); }
var i147=147; if(i147==147) { WriteLine(i147); }
var i148=148; if(i148==148) { WriteLine(i148); }
var i149=149; if(i149==149) { WriteLine(i149); }
var i150=150; if(i150==150) { WriteLine(i150); }
var i151=151; if(i151==151) { WriteLine(i151); }
var i152=152; if(i152==152) { WriteLine(i152); }
var i153=153; if(i153==153) { WriteLine(i153); }
var i154=154; if(i154==154) { WriteLine(i154); }
var i155=155; if(i155==155) { WriteLine(i155); }
var i156=156; if(i156==156) { WriteLine(i156); }
var i157=157; if(i157==157) { WriteLine(i157); }
var i158=158; if(i158==158) { WriteLine(i158); }
var i159=159; if(i159==159) { WriteLine(i159); }
var i160=160; if(i160==160) { WriteLine(i160); }
var i161=161; if(i161==161) { WriteLine(i161); }
var i162=162; if(i162==162) { WriteLine(i162); }
var i163=163; if(i163==163) { WriteLine(i163); }
var i164=164; if(i164==164) { WriteLine(i164); }
var i165=165; if(i165==165) { WriteLine(i165); }
var i166=166; if(i166==166) { WriteLine(i166); }
var i167=167; if(i167==167) { WriteLine(i167); }
var i168=168; if(i168==168) { WriteLine(i168); }
var i169=169; if(i169==169) { WriteLine(i169); }
var i170=170; if(i170==170) { WriteLine(i170); }
var i171=171; if(i171==171) { WriteLine(i171); }
var i172=172; if(i172==172) { WriteLine(i172); }
var i173=173; if(i173==173) { WriteLine(i173); }
var i174=174; if(i174==174) { WriteLine(i174); }
var i175=175; if(i175==175) { WriteLine(i175); }
var i176=176; if(i176==176) { WriteLine(i176); }
var i177=177; if(i177==177) { WriteLine(i177); }
var i178=178; if(i178==178) { WriteLine(i178); }
var i179=179; if(i179==179) { WriteLine(i179); }
var i180=180; if(i180==180) { WriteLine(i180); }
var i181=181; if(i181==181) { WriteLine(i181); }
var i182=182; if(i182==182) { WriteLine(i182); }
var i183=183; if(i183==183) { WriteLine(i183); }
var i184=184; if(i184==184) { WriteLine(i184); }
var i185=185; if(i185==185) { WriteLine(i185); }
var i186=186; if(i186==186) { WriteLine(i186); }
var i187=187; if(i187==187) { WriteLine(i187); }
var i188=188; if(i188==188) { WriteLine(i188); }
var i189=189; if(i189==189) { WriteLine(i189); }
var i190=190; if(i190==190) { WriteLine(i190); }
var i191=191; if(i191==191) { WriteLine(i191); }
var i192=192; if(i192==192) { WriteLine(i192); }
var i193=193; if(i193==193) { WriteLine(i193); }
var i194=194; if(i194==194) { WriteLine(i194); }
var i195=195; if(i195==195) { WriteLine(i195); }
var i196=196; if(i196==196) { WriteLine(i196); }
var i197=197; if(i197==197) { WriteLine(i197); }
var i198=198; if(i198==198) { WriteLine(i198); }
var i199=199; if(i199==199) { WriteLine(i199); }
var i200=200; if(i200==200) { WriteLine(i200); }
var i201=201; if(i201==201) { WriteLine(i201); }
var i202=202; if(i202==202) { WriteLine(i202); }
var i203=203; if(i203==203) { WriteLine(i203); }
var i204=204; if(i204==204) { WriteLine(i204); }
var i205=205; if(i205==205) { WriteLine(i205); }
var i206=206; if(i206==206) { WriteLine(i206); }
var i207=207; if(i207==207) { WriteLine(i207); }
var i208=208; if(i208==208) { WriteLine(i208); }
var i209=209; if(i209==209) { WriteLine(i209); }
var i210=210; if(i210==210) { WriteLine(i210); }
var i211=211; if(i211==211) { WriteLine(i211); }
var i212=212; if(i212==212) { WriteLine(i212); }
var i213=213; if(i213==213) { WriteLine(i213); }
var i214=214; if(i214==214) { WriteLine(i214); }
var i215=215; if(i215==215) { WriteLine(i215); }
var i216=216; if(i216==216) { WriteLine(i216); }
var i217=217; if(i217==217) { WriteLine(i217); }
var i218=218; if(i218==218) { WriteLine(i218); }
var i219=219; if(i219==219) { WriteLine(i219); }
var i220=220; if(i220==220) { WriteLine(i220); }
var i221=221; if(i221==221) { WriteLine(i221); }
var i222=222; if(i222==222) { WriteLine(i222); }
var i223=223; if(i223==223) { WriteLine(i223); }
var i224=224; if(i224==224) { WriteLine(i224); }
var i225=225; if(i225==225) { WriteLine(i225); }
var i226=226; if(i226==226) { WriteLine(i226); }
var i227=227; if(i227==227) { WriteLine(i227); }
var i228=228; if(i228==228) { WriteLine(i228); }
var i229=229; if(i229==229) { WriteLine(i229); }
var i230=230; if(i230==230) { WriteLine(i230); }
var i231=231; if(i231==231) { WriteLine(i231); }
var i232=232; if(i232==232) { WriteLine(i232); }
var i233=233; if(i233==233) { WriteLine(i233); }
var i234=234; if(i234==234) { WriteLine(i234); }
var i235=235; if(i235==235) { WriteLine(i235); }
var i236=236; if(i236==236) { WriteLine(i236); }
var i237=237; if(i237==237) { WriteLine(i237); }
var i238=238; if(i238==238) { WriteLine(i238); }
var i239=239; if(i239==239) { WriteLine(i239); }
var i240=240; if(i240==240) { WriteLine(i240); }
var i241=241; if(i241==241) { WriteLine(i241); }
var i242=242; if(i242==242) { WriteLine(i242); }
var i243=243; if(i243==243) { WriteLine(i243); }
var i244=244; if(i244==244) { WriteLine(i244); }
var i245=245; if(i245==245) { WriteLine(i245); }
var i246=246; if(i246==246) { WriteLine(i246); }
var i247=247; if(i247==247) { WriteLine(i247); }
var i248=248; if(i248==248) { WriteLine(i248); }
var i249=249; if(i249==249) { WriteLine(i249); }
var i250=250; if(i250==250) { WriteLine(i250); }
var i251=251; if(i251==251) { WriteLine(i251); }
var i252=252; if(i252==252) { WriteLine(i252); }
var i253=253; if(i253==253) { WriteLine(i253); }
var i254=254; if(i254==254) { WriteLine(i254); }
var i255=255; if(i255==255) { WriteLine(i255); }
var i256=256; if(i256==256) { WriteLine(i256); }
var i257=257; if(i257==257) { WriteLine(i257); }
var i258=258; if(i258==258) { WriteLine(i258); }
var i259=259; if(i259==259) { WriteLine(i259); }
var i260=260; if(i260==260) { WriteLine(i260); }
var i261=261; if(i261==261) { WriteLine(i261); }
var i262=262; if(i262==262) { WriteLine(i262); }
var i263=263; if(i263==263) { WriteLine(i263); }
var i264=264; if(i264==264) { WriteLine(i264); }
var i265=265; if(i265==265) { WriteLine(i265); }
var i266=266; if(i266==266) { WriteLine(i266); }
var i267=267; if(i267==267) { WriteLine(i267); }
var i268=268; if(i268==268) { WriteLine(i268); }
var i269=269; if(i269==269) { WriteLine(i269); }
var i270=270; if(i270==270) { WriteLine(i270); }
var i271=271; if(i271==271) { WriteLine(i271); }
var i272=272; if(i272==272) { WriteLine(i272); }
var i273=273; if(i273==273) { WriteLine(i273); }
var i274=274; if(i274==274) { WriteLine(i274); }
var i275=275; if(i275==275) { WriteLine(i275); }
var i276=276; if(i276==276) { WriteLine(i276); }
var i277=277; if(i277==277) { WriteLine(i277); }
var i278=278; if(i278==278) { WriteLine(i278); }
var i279=279; if(i279==279) { WriteLine(i279); }
var i280=280; if(i280==280) { WriteLine(i280); }
var i281=281; if(i281==281) { WriteLine(i281); }
var i282=282; if(i282==282) { WriteLine(i282); }
var i283=283; if(i283==283) { WriteLine(i283); }
var i284=284; if(i284==284) { WriteLine(i284); }
var i285=285; if(i285==285) { WriteLine(i285); }
var i286=286; if(i286==286) { WriteLine(i286); }
var i287=287; if(i287==287) { WriteLine(i287); }
var i288=288; if(i288==288) { WriteLine(i288); }
var i289=289; if(i289==289) { WriteLine(i289); }
var i290=290; if(i290==290) { WriteLine(i290); }
var i291=291; if(i291==291) { WriteLine(i291); }
var i292=292; if(i292==292) { WriteLine(i292); }
var i293=293; if(i293==293) { WriteLine(i293); }
var i294=294; if(i294==294) { WriteLine(i294); }
var i295=295; if(i295==295) { WriteLine(i295); }
var i296=296; if(i296==296) { WriteLine(i296); }
var i297=297; if(i297==297) { WriteLine(i297); }
var i298=298; if(i298==298) { WriteLine(i298); }
var i299=299; if(i299==299) { WriteLine(i299); }
var i300=300; if(i300==300) { WriteLine(i300); }


Legt man nun ein neues Programm an und definiert dies als auszuführender "Skript" des Programmes kann man dort dann mit der "Fehlerprüfung" sehen wieviel freie Variablendefinitionen noch zur Verfügung stehen. Auf dem jungfräulichen RaspberryMatic System hier (das einer CCU2 entspricht) stellt man somit fest das anscheinend maximal 200 Variablennamenplätze zu vergeben sind (ab "i201" kommt es zu den Fehlermeldungen).

Wende ich dieses Prozedere nun auf meinem vollwertigen RaspberryMatic (CCU2) System an sehe ich das hier bereits in Zeile 1 der Fehler zuschlägt und das somit bedeutet das meine freien Variablennamen komplett ausgeschöpft sind!.

Auch ich denke eQ-3 sollte hier wirklich unkompliziert und schnell reagieren. Etwas betsorglich stimmt mich allerdings, das das Problem anscheinend bereits seit der CCU1 existiert und damit vielleicht sogar eQ-3 bereits bekannt sein sollte – hierfür aber ggf. keine Lösung gefunden werden kann. Nachhaken werden ich jedoch definitiv und es wäre sicherlich hilfreich wenn das andere hier auch tun könnten.
RaspberryMatic 2.29.23.20171118 @ RPi3 mit ~140 HomeMatic Geräten + ioBroker – GitHubPayPal
Benutzeravatar
jmaus
 
Beiträge: 1860
Registriert: 17.02.2015, 14:45
Wohnort: Dresden

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitragvon Gluehwurm » 31.12.2015, 12:17

johnsn hat geschrieben:Falls jemand von EQ3 hier mitliest

Dafür gibt es eine Support-Adresse bei eq-3

Gruß
Bruno
Gluehwurm
 
Beiträge: 6963
Registriert: 19.03.2014, 00:37

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitragvon jmaus » 31.12.2015, 12:40

Gluehwurm hat geschrieben:
johnsn hat geschrieben:Falls jemand von EQ3 hier mitliest

Dafür gibt es eine Support-Adresse bei eq-3


Das Problem habe ich nun mit einer entsprechenden Fehlerbeschreibung und Beispielskripts an eQ3 weitergeleitet. Ich hoffe hierauf wird dann entsprechend reagiert und das Problem ggf. sogar in einer der nächsten Firmwareupdates repariert. Ich würde jedoch trotzdem jeden weiteren hier bitten auch eine entsprechende Support-Anfrage an eQ3 zu stellen damit das Problem eine entsprechende Prioritisierung erfährt.
RaspberryMatic 2.29.23.20171118 @ RPi3 mit ~140 HomeMatic Geräten + ioBroker – GitHubPayPal
Benutzeravatar
jmaus
 
Beiträge: 1860
Registriert: 17.02.2015, 14:45
Wohnort: Dresden

Re: Fehler im Script aber Script testen geht ? ! ? ! ?

Beitragvon Docspider » 03.01.2016, 16:46

Hallo,

ich habe ein ähnliches Problem festgestellt oder steh jetzt auch einfach auf dem Schlauch. Zuerst kurze Vorgeschichte:
Nachdem ich meine CCU2 auf Werkseinstellungen zurückgesetzt und alle
Aktoren neu angelernt habe (ja ein heiden Aufwand) war plötzlich nach einem Neustart alles wieder weg und drei Tage Arbeit weg. Also ein vier Tage altes Backup wieder eingespielt
und dann die ersten SV, Prog und Scripte wieder angelegt. Extra die neuen (http://homematic-forum.de/forum/viewtopic.php?f=26&t=27907)
Scripte genommen aber einige Scripte gehen einfach nicht und die SV bleiben leer.
Nun ein einfaches Script angelegt. Nur Zustand eines Griffes auslesen und in eine SV schreiben. Im Test Editor und der WeBUi wird
die SV richtig angezeigt aber in der SV steht ein Zahl.
Hier das Script:
CCU2_007.jpg

Hier in der WebUi:
CCU2_003.jpg

Hier Ergebniss in der SV:
CCU2_004.jpg

Wo liegt hier (mein?) der Fehler? Ich muss noch erwähnen dass ich mich erst langsam an das Scripten herantasten und vieles hier aus den Beiträgen entnommen habe.

Auch bei anderen Scripten die bisher gelaufen sind gibt es Probleme wie. z.B. das Wetterscript, dass auch in der neuen Version keine SV in der CCU2 mehr schreibt. In der WebUi werden die Werte in den SV problemlos angezeigt...
CCU2, Cux-D, Variablen: 45, Programme: 35, Datenpunkte: 863,
Kanäle: 166, Geräte: 30, Geräte RF: 26, Geräte Wired: 0, Geräte Batteriebetrieben: 3
Neu: Raspberry Pi3,
Docspider
 
Beiträge: 68
Registriert: 08.01.2014, 22:28

Nächste

Zurück zu HomeMatic - bekannte Bugs

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste







© homematic-forum.de & Lizenzgebern. Alle Rechte vorbehalten. Alle Bilder & Texte auf dieser Seite sind Eigentum
der jeweiligen Besitzer und dürfen ohne deren Einwilligung weder kopiert noch sonstwie weiter verwendet werden.