Jump to content

Recommended Posts

@jgab i got Error: socket hang up in NR when it tries to connect to ZBS. Ip and port is right

how can i set ZBS to run only "live" and not speedtime?

Edited by jompa68
Link to post
Share on other sites
  • Replies 2.7k
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Note. The first ~2000 posts of this thread is mainly about EventRunner3 that is for the HC2. EventRunner3 is not developed further, but bugs are fixed as they are reported. For HC3, the version i

I've been playing with the HC3 a bit  (I don't own a HC3 but a friend has allowed me to remotely login to do testing - I'm very grateful for that). ...and I have made some progress with EventRunn

Here is another "style" of coding when using the EventRunner framework. @julesmartens needed help to code an alarm system. It's a bit complicated because he needs "full" and "ring" protection dur

Posted Images

In the beginning of main(). Set _System.speed(false) or comment it out

  if _EMULATED then
    _System.speed(true)               -- run emulator faster than real-time
    --_System.setRemote("devices",{5})  -- make device 5 remote (call HC2 with api)
    --_System.installProxy()            -- Install HC2 proxy sending sourcetriggers back to emulator
  end

 

Link to post
Share on other sites

Pushed v3 B23

-Problem parsing array refs. Ex "a.b[1].c" created error. Fixed.

-nodered() had problem since _NODEREDTIMEOUT was declared local and turned out to be nil - so nodered() timed out immediately . Fixed.

 

Link to post
Share on other sites

Hello Jan,

Hue is again a problem

See below Fibaro call

only eetkamer (not hue) and hue woonkamer.plafondklokzijde  are switched on.

Did you already the nil value included in an update?

Thanks for your support

 

image.png.9135aced84e7bd19207420a72576a6ce.png

and the scene restarts very frequent

Link to post
Share on other sites
7 hours ago, Sjakie said:

Hello Jan,

Hue is again a problem

See below Fibaro call

only eetkamer (not hue) and hue woonkamer.plafondklokzijde  are switched on.

Did you already the nil value included in an update?

Thanks for your support

 

image.png.9135aced84e7bd19207420a72576a6ce.png

and the scene restarts very frequent

 

The fibaro:calls to switch them on is logged (21:51:02) and they are not nil (because then you wouldn't see the names of the variables in the call).

I wonder if the Hue bridge have issues with rapid commands ? 

I tried with my Hue lights (only 3) but I can call them in the same command without problem.

What you can do is set _debugFlags.hue=true and you get logs when the Hue bridge is called. That way we can determine if the commands are sent to the Hue bridge.

Link to post
Share on other sites

@jgab Thanks for new features in v3 !

 

I have issue with following:

 

  rule("@{03:20,catch} => Util.checkVersion()") -- Check for new version every morning at 3:20
  rule("#ER_version => log('New ER version, v:%s, fix:%s',env.event.version,env.event.fix))")
 

error in ZBS:

 Error in '#ER_version => log('New ER version, v:%s, fix:%s',env.event.version,env.event.fix))': EventRunnerTimers.lua:1288: Parser error char 83 (')') in expression '#ER_version => log('New ER version, v:%s, fix:%s',env.event.version,env.event.fix))' (EventRunnerTimers.lua:1031: attempt to index a nil value)

 

Line 1286:    --for i,v in ipairs(tokens.stream) do print(v.type, v.value, v.from, v.to) end
Line 1287:    local stat,res = pcall(function() return self.postParse(gRule(tokens)) end)
Line 1288:>>>    if not stat then local t=tokens.last() error(string.format("Parser error char %s ('%s') in expression '%s' (%s)",t.from+1,str:sub(t.from+1,t.to),str,res)) end
Line 1289:    return res
Line 1290:  end

 

Link to post
Share on other sites

I found reason: ')'

 

so you could correct it also in your v3 example

 

  --rule("@{06:00,catch} => Util.checkVersion()") -- Check for new version every morning at 6:00
  --rule("#ER_version => log('New ER version, v:%s, fix:%s',env.event.version,env.event.fix))")
 

Edited by petrkl12
Link to post
Share on other sites
8 minutes ago, petrkl12 said:

@jgab Thanks for new features in v3 !

 

I have issue with following:

 

  rule("@{03:20,catch} => Util.checkVersion()") -- Check for new version every morning at 3:20
  rule("#ER_version => log('New ER version, v:%s, fix:%s',env.event.version,env.event.fix))")
 

error in ZBS:

 Error in '#ER_version => log('New ER version, v:%s, fix:%s',env.event.version,env.event.fix))': EventRunnerTimers.lua:1288: Parser error char 83 (')') in expression '#ER_version => log('New ER version, v:%s, fix:%s',env.event.version,env.event.fix))' (EventRunnerTimers.lua:1031: attempt to index a nil value)

 

Line 1286:    --for i,v in ipairs(tokens.stream) do print(v.type, v.value, v.from, v.to) end
Line 1287:    local stat,res = pcall(function() return self.postParse(gRule(tokens)) end)
Line 1288:>>>    if not stat then local t=tokens.last() error(string.format("Parser error char %s ('%s') in expression '%s' (%s)",t.from+1,str:sub(t.from+1,t.to),str,res)) end
Line 1289:    return res
Line 1290:  end

 

 

Sorry, an extra parenthesis snuck in at the end of the expression (after "event.fix)"

rule("#ER_version => log('New ER version, v:%s, fix:%s',env.event.version,env.event.fix)")

Oops, you were faster than me :-) 

Edited by jgab
Link to post
Share on other sites

Pushed v3 B24

-minor fixes.

-"Autorescheduling" of daily timers ("dailys") are back.

Ex.


  rule("$Test = 09:00")
  rule("@{catch, 00:00, $Test, 10:00} => log('HUPP')")
  rule("@06:00 & wday('sat') => $Test=08:00")

We schedule for 00:00, 09:00, and 10:00

tomorrow at 06:00 we set $Test to 08:00 that will trigger a reschedule of the rule and it will run at 08:00 and 10:00 already tomorrow,

In the old model dailys were only scheduled at midnight so the new time 08:00 would not take affect until the day after tomorrow.

Small detail but I believe the rules will behave more "intuitively" these ways.

Link to post
Share on other sites

@jgab this gives wrong value in V3

$coffeeTimer = osdate('%H:%M',midnight+time($coffeeTimer)-60); 

was it os.date? and midnight is now also changed?

Link to post
Share on other sites
7 minutes ago, jompa68 said:

@jgab this gives wrong value in V3

$coffeeTimer = osdate('%H:%M',midnight+time($coffeeTimer)-60); 

was it os.date? and midnight is now also changed?

 

No they haven't changed - you get an error?

3 minutes ago, jgab said:

 

No they haven't changed - you get an error?

 

Btw, you don't need time() now for globals as the value is auto converted to a seconds

$coffeeTimer = osdate('%H:%M',midnight+$coffeeTimer-60); 

Maybe we should have a builtin HM(t) function that makes osdate('%H:%M',midnight+t)

Edited by jgab
Link to post
Share on other sites

in ZBS the time looks weird.

[34mFri/Aug/02,08:07:29:[413:1] fibaro:setGlobal(coffeeTimer,"00:04")[0m
[34mFri/Aug/02,08:07:29:[413:1] fibaro:getGlobalValue(coffeeTimer,)="00:04"[0m
Fri/Aug/02,08:07:29:[413:1] Coffee timer left:240 min[0m
[34mFri/Aug/02,08:07:29:[489:1] fibaro:startScene(413,{"type":"global","_from":-489,"name":"coffeeTimer","value":"00:04"})[0m
--kaffebryggaren
  rule("#VirtualSwitch{deviceID=Kok.kafferyggaren} & Kok.kafferyggaren:isOn => $coffeeTimer = '00:45'; enable(dt)") -- update global to start time
  rule("#VirtualSwitch{deviceID=Kok.kafferyggaren} & Kok.kafferyggaren:isOff => $coffeeTimer = '00:45'; disable(dt);log('Stängt av kaffet')") -- update global to start time
  dt=rule([[@@00:01 => 
      || Kok.kafferyggaren:isOn & $coffeeTimer >> 
         $coffeeTimer = os.date('%H:%M',midnight+time($coffeeTimer)-60); 
         log('Coffee timer left:%s min',$coffeeTimer)]]).disable()-- decrement time every minute
  rule([[trueFor(time($coffeeTimer),_kick & Kok.kafferyggaren:isOn & enable(dt)) => remote(_defaultNodeRed,{type='speak', data='Stänger nu av kaffebryggaren', volume='40'});wait(00:00:05);remote(_defaultNodeRed,#sonos{cmd='14'});wait(00:00:02);713:btn=25;Kok.kafferyggaren:off]])
  rule("$coffeeTimer = $coffeeTimer | '00:45'; _kick=true") -- at startup set var if not set (and also kick the 'for' rule)

 

and when time is ended it give this error

[34mFri/Aug/02,08:07:36:[413:1] [true]>>'Rule:55[trueFor(time($coffeeTimer),_kick & Kok.kafferyggaren:isOn & enable(dt)) => remot...]'[0m
[31mFri/Aug/02,08:07:41:[HC2 ] Error in Scene:413 "413_EventRunnerSub3.lua:1288: attempt to index local 'co' (a nil value)"[0m
stack traceback:
	...udio.app/Contents/ZeroBraneStudio/myprograms/HC2/HC2.lua:1482: in function 'runTimers'
	...udio.app/Contents/ZeroBraneStudio/myprograms/HC2/HC2.lua:228: in function 'startup'
	...udio.app/Contents/ZeroBraneStudio/myprograms/HC2/HC2.lua:3494: in main chunk
	[C]: at 0x00001c80

 

rule([[trueFor(time($coffeeTimer),_kick & Kok.kafferyggaren:isOn & enable(dt)) => remote(_defaultNodeRed,{type='speak', data='Stänger nu av kaffebryggaren', volume='40'});wait(00:00:05);remote(_defaultNodeRed,#sonos{cmd='14'});wait(00:00:02);713:btn=25;Kok.kafferyggaren:off]])

 

Link to post
Share on other sites
15 minutes ago, jompa68 said:

in ZBS the time looks weird.

[34mFri/Aug/02,08:07:29:[413:1] fibaro:setGlobal(coffeeTimer,"00:04")[0m
[34mFri/Aug/02,08:07:29:[413:1] fibaro:getGlobalValue(coffeeTimer,)="00:04"[0m
Fri/Aug/02,08:07:29:[413:1] Coffee timer left:240 min[0m
[34mFri/Aug/02,08:07:29:[489:1] fibaro:startScene(413,{"type":"global","_from":-489,"name":"coffeeTimer","value":"00:04"})[0m
--kaffebryggaren
  rule("#VirtualSwitch{deviceID=Kok.kafferyggaren} & Kok.kafferyggaren:isOn => $coffeeTimer = '00:45'; enable(dt)") -- update global to start time
  rule("#VirtualSwitch{deviceID=Kok.kafferyggaren} & Kok.kafferyggaren:isOff => $coffeeTimer = '00:45'; disable(dt);log('Stängt av kaffet')") -- update global to start time
  dt=rule([[@@00:01 => 
      || Kok.kafferyggaren:isOn & $coffeeTimer >> 
         $coffeeTimer = os.date('%H:%M',midnight+time($coffeeTimer)-60); 
         log('Coffee timer left:%s min',$coffeeTimer)]]).disable()-- decrement time every minute
  rule([[trueFor(time($coffeeTimer),_kick & Kok.kafferyggaren:isOn & enable(dt)) => remote(_defaultNodeRed,{type='speak', data='Stänger nu av kaffebryggaren', volume='40'});wait(00:00:05);remote(_defaultNodeRed,#sonos{cmd='14'});wait(00:00:02);713:btn=25;Kok.kafferyggaren:off]])
  rule("$coffeeTimer = $coffeeTimer | '00:45'; _kick=true") -- at startup set var if not set (and also kick the 'for' rule)

 

 

Yes, it's the auto conversion thing. If the global contains a time string like "00:04", $global will return that in seconds -> 240.

--kaffebryggaren
  rule("#VirtualSwitch{deviceID=Kok.kafferyggaren} & Kok.kafferyggaren:isOn => $coffeeTimer = 00:45; enable(dt)") -- update global to start time
  rule("#VirtualSwitch{deviceID=Kok.kafferyggaren} & Kok.kafferyggaren:isOff => $coffeeTimer = 00:45; disable(dt);log('Stängt av kaffet')") -- update global to start time

function HM(t) return os.date("%H:%M",Util.midnight()+t) end

dt=rule([[@@00:01 => 
      || Kok.kafferyggaren:isOn & $coffeeTimer >> 
         $coffeeTimer -= 60
         log('Coffee timer left:%s min',HM($coffeeTimer))]]).disable()-- decrement time every minute
  rule([[trueFor($coffeeTimer,Kok.kafferyggaren:isOn & enable(dt)) => remote(_defaultNodeRed,{type='speak', data='Stänger nu av kaffebryggaren', volume='40'});wait(00:00:05);remote(_defaultNodeRed,#sonos{cmd='14'});wait(00:00:02);713:btn=25;Kok.kafferyggaren:off]]).start()
  rule("$coffeeTimer = $coffeeTimer | 00:45") -- at startup set var if not set (and also kick the 'for' rule)

"$coffeeTimer -= 60" is the same as "$coffeeTimer = $coffeeTimer - 60"

I think you can avoid _kick with the .start() option.

Oh, if you use $coffeeTimer in a VD you have seconds and need to convert it to H:M for display.

Edited by jgab
Link to post
Share on other sites

Hello @jgab

Found another error in my ER , could You look at it on free time , thanks

 

Debug:

[DEBUG] 07:00:24: Error in 'Rule:3[#flora3{msg='$msg'} =>log('miflora 1 battery:%s, temperatur:%s, light:%s, moisture:%s, conductivity :%s',msg.battery,msg.temperature,msg.light,msg.moisture,msg.conductivity);...]': /opt/fibaro/scenes/392.lua:2144: fibaro:call(VD.Areka,"setProperty","ui.Label1.value","31%"),/opt/fibaro/scenes/392.lua:976: ID:1053 does not support action 'setProperty'

This is VD 1053

image.png.3a8e9b9160e02d77142f0be49abb9808.png

 

ER 2144 line :

image.png.2862fad0a408e0e1cb55a1912bd4dbe5.png

 

ER 976 line :

image.png.633f88ab4b83a428a8f22f50eab14a2d.png

Link to post
Share on other sites
12 minutes ago, domin12 said:

Hello @jgab

Found another error in my ER , could You look at it on free time , thanks

 

Debug:

[DEBUG] 07:00:24: Error in 'Rule:3[#flora3{msg='$msg'} =>log('miflora 1 battery:%s, temperatur:%s, light:%s, moisture:%s, conductivity :%s',msg.battery,msg.temperature,msg.light,msg.moisture,msg.conductivity);...]': /opt/fibaro/scenes/392.lua:2144: fibaro:call(VD.Areka,"setProperty","ui.Label1.value","31%"),/opt/fibaro/scenes/392.lua:976: ID:1053 does not support action 'setProperty'

 

 

Fixed in v3 B25. I'm a bit more strict what actions are allowed on deviceIDs and I take the actions from the deviceID structure where Fibaro lists available actions.

For VDs, only "setSlider" and "setLabel" were listed. not 'setProperty'. Oh well, I allow 'setProperty' per default now.

Edited by jgab
  • Like 1
Link to post
Share on other sites

@jgab not good. It stills same error like above in some co function and timer steps over 24h and starts counting from that

 

Fri/Aug/02,07:41:38:[413:1] Coffee timer left:00:00 min�[0m
�[34mFri/Aug/02,07:41:39:[413:1] fibaro:getGlobalValue(coffeeTimer,)="0"�[0m
�[34mFri/Aug/02,07:41:39:[413:1] fibaro:get(Kok.kafferyggaren,"value")="true",1564026080�[0m
�[34mFri/Aug/02,07:41:39:[413:1] [true]>>'Rule:55[trueFor($coffeeTimer,Kok.kafferyggaren:isOn & enable(dt)) => remote(_defaultNode...]'�[0m
�[34mFri/Aug/02,07:41:39:[489:1] fibaro:startScene(413,{"type":"global","_from":-489,"name":"coffeeTimer","value":"0"})�[0m
�[34mFri/Aug/02,07:41:39:[413:1] fibaro:getGlobalValue(coffeeTimer,)="0"�[0m
�[34mFri/Aug/02,07:41:39:[413:1] fibaro:getGlobalValue(coffeeTimer,)="0"�[0m
�[34mFri/Aug/02,07:41:39:[413:1] fibaro:get(Kok.kafferyggaren,"value")="true",1564026080�[0m
�[34mFri/Aug/02,07:41:39:[413:1] [false]>>'Rule:55[trueFor($coffeeTimer,Kok.kafferyggaren:isOn & enable(dt)) => remote(_defaultNode...]'�[0m
�[34mFri/Aug/02,07:41:39:[413:1] fibaro:getGlobalValue(coffeeTimer,)="0"�[0m
�[34mFri/Aug/02,07:41:39:[413:1] fibaro:get(Kok.kafferyggaren,"value")="true",1564026080�[0m
�[34mFri/Aug/02,07:41:39:[413:1] [true]>>'Rule:55[trueFor($coffeeTimer,Kok.kafferyggaren:isOn & enable(dt)) => remote(_defaultNode...]'�[0m
�[31mFri/Aug/02,07:41:44:[HC2 ] Error in Scene:413 "413_EventRunnerSub3.lua:1301: attempt to index local 'co' (a nil value)"�[0m
stack traceback:
	...udio.app/Contents/ZeroBraneStudio/myprograms/HC2/HC2.lua:1482: in function 'runTimers'
	...udio.app/Contents/ZeroBraneStudio/myprograms/HC2/HC2.lua:228: in function 'startup'
	...udio.app/Contents/ZeroBraneStudio/myprograms/HC2/HC2.lua:3494: in main chunk
	[C]: at 0x00001c80
�[31mFri/Aug/02,07:41:44:[HC2 ] Error in Scene:413 "413_EventRunnerSub3.lua:1301: attempt to index local 'co' (a nil value)"�[0m
stack traceback:
	...udio.app/Contents/ZeroBraneStudio/myprograms/HC2/HC2.lua:1482: in function 'runTimers'
	...udio.app/Contents/ZeroBraneStudio/myprograms/HC2/HC2.lua:228: in function 'startup'
	...udio.app/Contents/ZeroBraneStudio/myprograms/HC2/HC2.lua:3494: in main chunk
	[C]: at 0x00001c80
...
�[34mFri/Aug/02,07:42:39:[413:1] fibaro:get(Kok.kafferyggaren,"value")="true",1564026080�[0m
�[34mFri/Aug/02,07:42:39:[413:1] fibaro:getGlobalValue(coffeeTimer,)="0"�[0m
�[34mFri/Aug/02,07:42:39:[413:1] fibaro:getGlobalValue(coffeeTimer,)="0"�[0m
�[34mFri/Aug/02,07:42:39:[413:1] fibaro:setGlobal(coffeeTimer,-60)�[0m
�[34mFri/Aug/02,07:42:39:[413:1] fibaro:getGlobalValue(coffeeTimer,)="-60"�[0m
Fri/Aug/02,07:42:39:[413:1] Coffee timer left:23:59 min�[0m
�[34mFri/Aug/02,07:42:39:[489:1] fibaro:startScene(413,{"type":"global","_from":-489,"name":"coffeeTimer","value":"-60"})�[0m
�[34mFri/Aug/02,07:42:39:[413:1] fibaro:getGlobalValue(coffeeTimer,)="-60"�[0m
�[34mFri/Aug/02,07:42:39:[413:1] fibaro:getGlobalValue(coffeeTimer,)="-60"�[0m
�[34mFri/Aug/02,07:42:39:[413:1] fibaro:get(Kok.kafferyggaren,"value")="true",1564026080�[0m
�[34mFri/Aug/02,07:42:39:[413:1] [false]>>'Rule:55[trueFor($coffeeTimer,Kok.kafferyggaren:isOn & enable(dt)) => remote(_defaultNode...]'�[0m
..
�[34mFri/Aug/02,07:43:38:[413:1] fibaro:get(Kok.kafferyggaren,"value")="true",1564026080�[0m
�[34mFri/Aug/02,07:43:38:[413:1] fibaro:getGlobalValue(coffeeTimer,)="-60"�[0m
�[34mFri/Aug/02,07:43:38:[413:1] fibaro:getGlobalValue(coffeeTimer,)="-60"�[0m
�[34mFri/Aug/02,07:43:38:[413:1] fibaro:setGlobal(coffeeTimer,-120)�[0m
�[34mFri/Aug/02,07:43:38:[413:1] fibaro:getGlobalValue(coffeeTimer,)="-120"�[0m
Fri/Aug/02,07:43:38:[413:1] Coffee timer left:23:58 min�[0m

 

Link to post
Share on other sites
11 minutes ago, jompa68 said:

@jgab not good. It stills same error like above in some co function and timer steps over 24h and starts counting from that

 

 

What a mess!

Why "fibaro:get(Kok.kafferyggaren,"value")="true",1564026080"

Seems like Kok.kafferyggaren is set to 'true' and not a deviceID ? sorry read wrong.

I creates an error inside the 'trueFor' that is ugly - I will add a better way to capture errors there.

Edited by jgab
Link to post
Share on other sites

same behavior in WC

[34mFri/Aug/02,07:57:43:[489:1] fibaro:getValue(pirSensor.wc,"value")="1"[0m
[34mFri/Aug/02,07:57:43:[489:1] fibaro:get(pirSensor.wc,"value")="1",1564725439[0m
[34mFri/Aug/02,07:57:43:[489:1] fibaro:get(pirSensor.wc,"value")="1",1564725439[0m
[34mFri/Aug/02,07:57:43:[489:1] fibaro:startScene(413,{"type":"VirtualSensor","deviceID":752,"_from":-489,"value":"1"})[0m
[34mFri/Aug/02,07:57:43:[413:1] fibaro:get(Wc.Fan,"value")="true",1564026076[0m
[34mFri/Aug/02,07:57:43:[413:1] [false]>>'Rule:78[#VirtualSensor{deviceID=pirSensor.wc,value='1'} & Wc.Fan:isOff => log('Rörelse,...]'[0m
[34mFri/Aug/02,07:57:43:[413:1] [false]>>'Rule:80[trueFor(00:08,#VirtualSensor{deviceID=pirSensor.wc,value='$value'} & value=='0')...]'[0m

 

Link to post
Share on other sites

What is wrong with this publish rule? 

  --LUX UTE
  rule("Lux.ute:value => publish(#VirtualSensor{deviceID=Lux.ute,value=Lux.ute:value})")
[34mFri/Aug/02,08:21:33:[489:1] fibaro:startScene(413,{"type":"VirtualSensor","deviceID":1029,"_from":-489,"value":"222"})[0m
[31mFri/Aug/02,08:21:33:[489:1] Error in 'Rule:1[Lux.ute:value => publish(#VirtualSensor{deviceID=Lux.ute,value=Lux.ute:value})]': 489_EventRunnerPub3.lua:243: attempt to compare nil with number[0m
[31mFri/Aug/02,08:21:33:[489:1] 
Line 241:  local constraints = {}
Line 242:  constraints['=='] = function(val) return function(x) x,val=coerce(x,val) return x == val end end
Line 243:>>>  constraints['>='] = function(val) return function(x) x,val=coerce(x,val) return x >= val end end
Line 244:  constraints['<='] = function(val) return function(x) x,val=coerce(x,val) return x <= val end end
Line 245:  constraints['>'] = function(val) return function(x) x,val=coerce(x,val) return x > val end end
[0m

 

Link to post
Share on other sites
9 minutes ago, jompa68 said:

What is wrong with this publish rule? 

  --LUX UTE
  rule("Lux.ute:value => publish(#VirtualSensor{deviceID=Lux.ute,value=Lux.ute:value})")
[34mFri/Aug/02,08:21:33:[489:1] fibaro:startScene(413,{"type":"VirtualSensor","deviceID":1029,"_from":-489,"value":"222"})[0m
[31mFri/Aug/02,08:21:33:[489:1] Error in 'Rule:1[Lux.ute:value => publish(#VirtualSensor{deviceID=Lux.ute,value=Lux.ute:value})]': 489_EventRunnerPub3.lua:243: attempt to compare nil with number[0m
[31mFri/Aug/02,08:21:33:[489:1] 
Line 241:  local constraints = {}
Line 242:  constraints['=='] = function(val) return function(x) x,val=coerce(x,val) return x == val end end
Line 243:>>>  constraints['>='] = function(val) return function(x) x,val=coerce(x,val) return x >= val end end
Line 244:  constraints['<='] = function(val) return function(x) x,val=coerce(x,val) return x <= val end end
Line 245:  constraints['>'] = function(val) return function(x) x,val=coerce(x,val) return x > val end end
[0m

 

 

That rule doesn't seem to have anything to do with the error. Can you show more of the rules?

I'm working on the coffee machine...

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...