Coder Social home page Coder Social logo

temoto / vender Goto Github PK

View Code? Open in Web Editor NEW
63.0 14.0 20.0 14.08 MB

Open source vending machine controller firmware

License: Creative Commons Zero v1.0 Universal

Go 89.26% Shell 1.01% HCL 0.91% C 7.25% Makefile 0.21% Awk 1.36%
vending-machine vending mdb-adapter status-working

vender's Introduction

What

Vender is free open source VMC (Vending Machine Controller).

Status:

  • MDB adapter hardware module - works
  • VMC - in development
  • Configuration editor - planned

Hardware

Required for VMC:

  • Works on RaspberryPI and OrangePi Lite (H3). Possibly anything with GPIO that runs Go/Linux.
  • MDB signal level inverter and current limiter - required, see files in hardware/schematic
  • MDB adapter, takes care of 9bit and timing, we use ATMega328p with hardware/mega-firmware It is not mandatory, software option is available: https://github.com/temoto/iodin

Supported peripherals:

  • MDB coin acceptor, bill validator
  • Evend MDB drink devices
  • any MDB device via configuration scenarios (work in progress)
  • MT16S2R HD44780-like text display
  • TWI(I2C) numpad keyboard
  • SSD1306-compatible graphic display (planned)

Design

VMC overall structure:

  • engine (see internal/engine packages) executes actions, handles concurrency and errors
  • device/feature drivers provide actions to engine
  • configuration scenario specifies action groups and when to execute them

Build

  • Install Go 1.15 from https://golang.org/dl/
  • Set target environment, default is GOARCH=arm GOOS=linux
  • Run script/build
  • Deploy file build/vender to your hardware

Supported Go versions: 1.13 and 1.15

Vender compiled with Go 1.13 was successfully running in production until release v0.200630.0. Go 1.14 introduced async preemtible runtime by interrupting syscalls. Go 1.15 os and net packages automatically retry on EINTR.

vender's People

Contributors

alextransit avatar dependabot[bot] avatar temoto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vender's Issues

error spam

при выдаче
execute menu code=6 price=1700(raw) name='кофе со сливками и сахаром': evend.elevator.move:0->100/wait-done/poll-loop: evend.elevator.move:0->100/wait-done: evend.elevator is offline
далее в цикле непрерывно начал слать.

probe device=bill required=false: bill.init: bill RESET: bill is offline
probe device=coin required=true: coin.init: coin RESET: coin is offline
probe device=evend.cup required=true: evend.cup.init: evend.cup(e0).initIO: evend.cup RESET: evend.cup is offline
probe device=evend.hopper2 required=false: evend.hopper2.init: evend.hopper2(48).initIO: evend.hopper2 RESET: evend.hopper2 is offline
probe device=evend.conveyor required=true: evend.conveyor.init: evend.conveyor(d8).initIO: evend.conveyor RESET: evend.conveyor is offline
probe device=evend.hopper7 required=false: evend.hopper7.init: evend.hopper7(70).initIO: evend.hopper7 RESET: evend.hopper7 is offline
probe device=evend.valve required=true: evend.valve.init: evend.valve(c0).initIO: evend.valve RESET: evend.valve is offline
probe device=evend.hopper8 required=false: evend.hopper8.init: evend.hopper8(78).initIO: evend.hopper8 RESET: evend.hopper8 is offline
probe device=evend.hopper3 required=false: evend.hopper3.init: evend.hopper3(50).initIO: evend.hopper3 RESET: evend.hopper3 is offline
probe device=evend.hopper5 required=false: evend.hopper5.init: evend.hopper5(60).initIO: evend.hopper5 RESET: evend.hopper5 is offline
probe device=evend.hopper4 required=false: evend.hopper4.init: evend.hopper4(58).initIO: evend.hopper4 RESET: evend.hopper4 is offline
probe device=evend.hopper1 required=false: evend.hopper1.init: evend.hopper1(40).initIO: evend.hopper1 RESET: evend.hopper1 is offline
probe device=evend.hopper6 required=false: evend.hopper6.init: evend.hopper6(68).initIO: evend.hopper6 RESET: evend.hopper6 is offline
probe device=evend.elevator required=true: evend.elevator.init: evend.elevator(d0).initIO: evend.elevator RESET: evend.elevator is offline
probe device=evend.mixer required=true: evend.mixer.init: evend.mixer(c8).initIO: evend.mixer RESET: evend.mixer is offline
probe device=evend.mixer required=true: evend.mixer.init: evend.mixer(c8).initIO: evend.mixer RESET: evend.mixer is offline
"hardware enum: multiple errors:
- MDB timeout
github.com/temoto/vender/hardware/mdb/mdb.go:73: mdb.Tx send=08 recv=
github.com/temoto/vender/hardware/mdb/device.go:361: coin is offline
github.com/temoto/vender/hardware/mdb/device.go:296: coin RESET
github.com/temoto/vender/hardware/mdb/coin/coin.go:100: coin.init
github.com/temoto/vender/internal/state/hardware.go:263: probe device=coin required=true
- multiple errors:
- MDB timeout
github.com/temoto/vender/hardware/mdb/mdb.go:73: mdb.Tx send=e0 recv=
github.com/temoto/vender/hardware/mdb/device.go:361: evend.cup is offline
github.com/temoto/vender/hardware/mdb/device.go:296: evend.cup RESET
github.com/temoto/vender/hardware/mdb/evend/generic.go:82: evend.cup(e0).initIO
github.com/temoto/vender/hardware/mdb/evend/cup.go:39: evend.cup.init
github.com/temoto/vender/internal/state/hardware.go:263: probe device=evend.cup required=true
- MDB timeout
github.com/temoto/vender/hardware/mdb/mdb.go:73: mdb.Tx send=d8 recv=
github.com/temoto/vender/hardware/mdb/device.go:361: evend.conveyor is offline
github.com/temoto/vender/hardware/mdb/device.go:296: evend.conveyor RESET
github.com/temoto/vender/hardware/mdb/evend/generic.go:82: evend.conveyor(d8).initIO
github.com/temoto/vender/hardware/mdb/evend/conveyor.go:66: evend.conveyor.init
github.com/temoto/vender/internal/state/hardware.go:263: probe device=evend.conveyor required=true
- MDB timeout
github.com/temoto/vender/hardware/mdb/mdb.go:73: mdb.Tx send=c0 recv=
github.com/temoto/vender/hardware/mdb/device.go:361: evend.valve is offline
github.com/temoto/vender/hardware/mdb/device.go:296: evend.valve RESET
github.com/temoto/vender/hardware/mdb/evend/generic.go:82: evend.valve(c0).initIO
github.com/temoto/vender/hardware/mdb/evend/valve.go:103: evend.valve.init
github.com/temoto/vender/internal/state/hardware.go:263: probe device=evend.valve required=true
- MDB timeout
github.com/temoto/vender/hardware/mdb/mdb.go:73: mdb.Tx send=d0 recv=
github.com/temoto/vender/hardware/mdb/device.go:361: evend.elevator is offline
github.com/temoto/vender/hardware/mdb/device.go:296: evend.elevator RESET
github.com/temoto/vender/hardware/mdb/evend/generic.go:82: evend.elevator(d0).initIO
github.com/temoto/vender/hardware/mdb/evend/elevator.go:47: evend.elevator.init
github.com/temoto/vender/internal/state/hardware.go:263: probe device=evend.elevator required=true
- MDB timeout
github.com/temoto/vender/hardware/mdb/mdb.go:73: mdb.Tx send=c8 recv=
github.com/temoto/vender/hardware/mdb/device.go:361: evend.mixer is offline
github.com/temoto/vender/hardware/mdb/device.go:296: evend.mixer RESET
github.com/temoto/vender/hardware/mdb/evend/generic.go:82: evend.mixer(c8).initIO
github.com/temoto/vender/hardware/mdb/evend/mixer.go:64: evend.mixer.init
github.com/temoto/vender/internal/state/hardware.go:263: probe device=evend.mixer required=true"

Friendly chat about vending projects

I stumbled upon this repository in search of open source firmwares for vending machines. I've skimemd through the source code a bit but cannot put a finger on what hardware this firmware is for. It'd be a good addition to the repo, to have a supported hardware profile or readme that explains, how to use this.

непрерывный reconect при недоступном брокере

при недоступном брокере, клиент постоянно пытается подключиться.
я думаю трафика будет нормально.

UPD как то странно реконектится. то пару раз в секунду, то каждуе 2-2 секунды.

second hardware configuration

I'd like to set up the VMC and help the project while doing so as well. I've a Raspberry Pi B+ and an Arduino Uno R3. Some other hardware that I can procure as well.

I was wondering about a plan on how to go about running the project on said hardware and have the bare minimum of MDB device and a motor control array (maybe).

Originally posted by @mhaqs in #1 (comment)

CoinCo (PAYOUT POLL response=0407)

по факту недодал 20р
May 24 11:11:17 vm02 vender[3274]: tubes before dispense (10:56,1:91,2:74,5:79,total:1194)
May 24 11:11:25 vm02 vender[3274]: dispense.go:294: error: PLEASE REPORT PAYOUT POLL response=0407 pi={Defective Sensor 0 Fatal 0 false 0}
May 24 11:11:25 vm02 vender[3274]: coin total dispensed=80
May 24 11:11:25 vm02 vender[3274]: tubes after dispense (1:91,2:74,total:239)

bill ICT. 2 escrow + stacked = 0 (написал кредит до укладки)

Jun 25 15:25:35.865929 vm05 vender[681]: escrow bill:50
Jun 25 15:25:35.865929 vm05 vender[681]: --- client activity begin ---
Jun 25 15:25:35.865929 vm05 vender[681]: transport-mqtt.go:108: transport sendstate payload=07
Jun 25 15:25:35.908745 vm05 vender[681]: Display.L1=Кредит: 50
Jun 25 15:25:35.908745 vm05 vender[681]: Display.L2=Код:
Jun 25 15:25:42.965780 vm05 vender[681]: bill.go:173: bill.poll/info: status=Info cashbox=false nominal=0 count=0 hwcode=a0 err=
Jun 25 15:25:43.180963 vm05 vender[681]: escrow bill:50
Jun 25 15:25:43.222062 vm05 vender[681]: stacked bill:50
Jun 25 15:26:09.754475 vm05 vender[681]: key.sugar+
Jun 25 15:26:09.761633 vm05 vender[681]: input.go:121: debug: input emit=types.InputEvent{Source:"evend-keyboard", Key:0x44, Up:false}
Jun 25 15:26:10.143006 vm05 vender[681]: key.sugar+
Jun 25 15:26:10.143006 vm05 vender[681]: input.go:121: debug: input emit=types.InputEvent{Source:"evend-keyboard", Key:0x44, Up:false}
Jun 25 15:26:10.530223 vm05 vender[681]: input.go:121: debug: input emit=types.InputEvent{Source:"evend-keyboard", Key:0x44, Up:false}
Jun 25 15:26:10.531088 vm05 vender[681]: key.sugar+
Jun 25 15:26:11.126528 vm05 vender[681]: input.go:121: debug: input emit=types.InputEvent{Source:"evend-keyboard", Key:0x44, Up:false}
Jun 25 15:26:11.126528 vm05 vender[681]: key.sugar+
Jun 25 15:26:13.316275 vm05 vender[681]: input.go:121: debug: input emit=types.InputEvent{Source:"evend-keyboard", Key:0x43, Up:false}
Jun 25 15:26:13.316275 vm05 vender[681]: key.sugar-
Jun 25 15:26:13.589181 vm05 vender[681]: input.go:121: debug: input emit=types.InputEvent{Source:"evend-keyboard", Key:0x43, Up:false}
Jun 25 15:26:13.589181 vm05 vender[681]: key.sugar-
Jun 25 15:26:14.392501 vm05 vender[681]: input.go:121: debug: input emit=types.InputEvent{Source:"evend-keyboard", Key:0x42, Up:false}
Jun 25 15:26:14.392501 vm05 vender[681]: key.cream+
Jun 25 15:26:14.632502 vm05 vender[681]: input.go:121: debug: input emit=types.InputEvent{Source:"evend-keyboard", Key:0x42, Up:false}
Jun 25 15:26:14.633369 vm05 vender[681]: key.cream+
Jun 25 15:26:15.555085 vm05 vender[681]: input.go:121: debug: input emit=types.InputEvent{Source:"evend-keyboard", Key:0x41, Up:false}
Jun 25 15:26:15.555085 vm05 vender[681]: key.cream-
Jun 25 15:26:18.631759 vm05 vender[681]: Display.L1=Качественные напитки. Установка и обслуживание +7 963 012 9955
Jun 25 15:26:18.631759 vm05 vender[681]: Display.L2=
Jun 25 15:26:23.121099 vm05 vender[681]: input.go:121: debug: input emit=types.InputEvent{Source:"evend-keyboard", Key:0x31, Up:false}
Jun 25 15:26:23.162633 vm05 vender[681]: Display.L1=Кредит: 0
Jun 25 15:26:23.162633 vm05 vender[681]: Display.L2=Код: 1

error (data corrupted) sends ever 10s

data corrupted
github.com/temoto/vender/internal/state/persist/persist.go:76: persist inventory Load
github.com/temoto/vender/internal/state/global.go:314: initInventory

espresso (POLL=70 unexpected)

Jul 01 12:46:52.525770 vm04 vender[1635]: api.go:38: debug: tele.Error: github.com/temoto/vender/hardware/mdb/evend/generic.go:94: evend.espresso(e8) POLL=70 unexpected
Jul 01 12:46:52.525770 vm04 vender[1635]: github.com/temoto/vender/hardware/mdb/device.go:236: evend.espresso.grind/wait-done/poll-loop

execute menu code=18 price=2400(raw) name='зерновой американо со сливками и сахаром': evend.espresso.grind/wait-done/poll-loop: evend.espresso(e8) POLL=70 unexpected

mega protocol error (ломается когда не работает)

May 03 23:42:36.590364 vm18 vender[13240]: display.line1=Качественные напитки. Установка и обслуживание +7 963 012 9955
May 03 23:42:36.590364 vm18 vender[13240]: display.line2=
May 03 23:47:32.668812 vm18 vender[13240]: io_mega.go:104: fatal: mdb.mega.Tx CRITICAL request=33: CRITICAL mega protocol error
May 03 23:47:32.754459 vm18 systemd[1]: vender.service: Main process exited, code=exited, status=1/FAILURE
May 03 23:47:32.789618 vm18 bash[6978]: + [[ exit-code != success ]]
May 03 23:47:32.793797 vm18 bash[6978]: + /bin/systemctl start vender-broken.service
May 03 23:47:32.863934 vm18 systemd[1]: Starting Vender daemon fail mode...

hopper poll err

Jul 07 17:59:27 vm06 vender[5071]: generic.go:196: error: evend.hopper5.run/wait-ready PLEASE REPORT WaitReady value=20 (24&^00) -> unexpected
Jul 07 17:59:27 vm06 vender[5071]: api.go:38: debug: tele.Error: evend.hopper5.run/wait-ready PLEASE REPORT WaitReady value=20 (24&^00) -> unexpected
Jul 07 17:59:27 vm06 vender[5071]: api.go:38: debug: tele.Error: github.com/temoto/vender/hardware/mdb/evend/generic.go:94: evend.hopper5(60) POLL=24 unexpected
Jul 07 17:59:27 vm06 vender[5071]: github.com/temoto/vender/hardware/mdb/device.go:236: evend.hopper5.run/wait-ready/poll-loop

cup timeout

api.go:39: debug: tele.Error: github.com/temoto/vender/hardware/mdb/device.go:246: evend.cup.dispense/wait-done/poll-loop timeout
persist.go:93: debug: persist inventory storage.write duration=36.891841ms

evend.cup.dispense/wait-done/poll-loop timeout
execute menu code=44 price=3000(raw) name='теплый шоколад со сливками и орешками': evend.cup.dispense/wait-done/poll-loop timeout
evend.cup tx request=e203 state=Error: CRITICAL code error state=invalid
broken mode


Apr 15 18:55:53 vm20 vender[7304]: persist.go:93: debug: persist inventory storage.write duration=25.039037ms
Apr 15 18:55:53 vm20 vender[7304]: ui-front.go:321: debug: ui-front selected=menu code=23 price=2700(raw) name='кофе двойной со сливками и сахаром' end err=evend.cup.dispense/wait-done/poll-loop
Apr 15 18:55:53 vm20 vender[7304]: api.go:39: debug: tele.Error: github.com/temoto/vender/hardware/mdb/device.go:246: evend.cup.dispense/wait-done/poll-loop timeout
Apr 15 18:55:53 vm20 vender[7304]: github.com/temoto/vender/internal/ui/ui-front.go:329: execute menu code=23 price=2700(raw) name='кофе двойной со сливками и сахаром'
Apr 15 18:55:54 vm20 vender[7304]: engine.go:223: debug: engine.ExecList tag=on_menu_error list=[ money.abort ]
Apr 15 18:55:54 vm20 vender[7304]: api.go:148: debug: money-abort cash=27
Apr 15 18:55:57 vm20 vender[7304]: api.go:189: debug: money.payout coin total dispensed=27
Apr 15 18:55:57 vm20 vender[7304]: ui-front.go:335: on_menu_error success
Apr 15 18:55:57 vm20 vender[7304]: state-machine.go:208: debug: ui exit FrontAccept -> Broken
Apr 15 18:55:57 vm20 vender[7304]: state-machine.go:86: debug: ui enter Broken
Apr 15 18:55:57 vm20 vender[7304]: state-machine.go:114: state=broken
Apr 15 18:55:57 vm20 vender[7304]: engine.go:223: debug: engine.ExecList tag=on_broken list=[ evend.cup.light_off evend.valve.set_temp_hot(0) ]
Apr 15 18:55:57 vm20 vender[7304]: api.go:39: debug: tele.Error: CRITICAL code error state=invalid
Apr 15 18:55:57 vm20 vender[7304]: github.com/temoto/vender/hardware/mdb/device.go:363: evend.cup tx request=e203 state=Error
Apr 15 18:55:57 vm20 vender[7304]: state-machine.go:119: error: CRITICAL code error state=invalid
Apr 15 18:55:57 vm20 vender[7304]: github.com/temoto/vender/hardware/mdb/device.go:363: evend.cup tx request=e203 state=Error
Apr 15 18:55:57 vm20 vender[7304]: github.com/temoto/vender/hardware/mdb/device.go:145: evend.cup TxMaybe request=e203 state=Error
Apr 15 18:55:57 vm20 vender[7304]: github.com/temoto/vender/internal/ui/state-machine.go:119: on_broken
Apr 15 18:55:57 vm20 vender[7304]: state-machine.go:251: debug: execute script (StateBroken)

evend.cup.dispense/wait-done/poll-loop timeout
execute menu code=23 price=2700(raw) name='кофе двойной со сливками и сахаром': evend.cup.dispense/wait-done/poll-loop timeout
evend.cup tx request=e203 state=Error: CRITICAL code error state=invalid

hopper (неизвестный ответ)

Apr 27 15:28:50.218490 vm18 vender[2192]: generic.go:196: error: evend.hopper6.run/wait-ready PLEASE REPORT WaitReady value=20 (24&^00) -> unexpected
Apr 27 15:28:50.247742 vm18 vender[2192]: persist.go:93: debug: persist inventory storage.write duration=15.552178ms
Apr 27 15:28:50.249521 vm18 vender[2192]: ui-front.go:329: debug: ui-front selected=menu code=81 price=1800(raw) name='чай малиновый' end err=evend.hopper6.run/wait-ready/poll-loop: evend.hopp
Apr 27 15:28:50.273788 vm18 vender[2192]: display.line1=
Apr 27 15:28:50.273788 vm18 vender[2192]: display.line2=ОШИБКА
Apr 27 15:28:50.283311 vm18 vender[2192]: engine.go:223: debug: engine.ExecList tag=on_menu_error list=[ money.abort ]
Apr 27 15:28:50.284033 vm18 vender[2192]: api.go:152: debug: money-abort cash=18
Apr 27 15:28:53.736659 vm18 vender[2192]: api.go:195: debug: money.payout coin total dispensed=18
Apr 27 15:28:53.741245 vm18 vender[2192]: ui-front.go:343: on_menu_error success
Apr 27 15:28:53.741245 vm18 vender[2192]: state-machine.go:219: debug: ui exit FrontAccept -> Broken

evend.hopper6 errcode=1
evend.hopper6.run/wait-ready PLEASE REPORT WaitReady value=20 (24&^00) -> unexpected
execute menu code=81 price=1800(raw) name='чай малиновый': evend.hopper6.run/wait-ready/poll-loop: evend.hopper6(68) POLL=24 unexpected

ошибка при попытке размена. (vender v0.210307.0)

опустили 100 и нажали выдачу. (зажал бабло)

Mar 17 10:00:50.361696 vm02 vender[741]: engine.go:223: debug: engine.ExecList tag=on_front_begin list=[ evend.valve.set_temp_hot_config evend.cup.light_on ]
Mar 17 10:00:50.472117 vm02 vender[741]: state-machine.go:208: debug: ui exit FrontBegin -> FrontSelect
Mar 17 10:00:50.472117 vm02 vender[741]: state-machine.go:86: debug: ui enter FrontSelect
Mar 17 10:00:50.473758 vm02 vender[741]: accept.go:51: debug: money.accept-credit bill input disable
Mar 17 10:00:50.473758 vm02 vender[741]: accept.go:53: debug: money.accept-credit maxConfig=100 maxPrice=45 available=100 -> limit=0
Mar 17 10:00:51.447040 vm02 vender[741]: input.go:119: debug: input emit=types.InputEvent{Source:"money", Key:0x1b, Up:false}
Mar 17 10:00:51.452794 vm02 vender[741]: api.go:148: debug: money-abort cash=100
Mar 17 10:00:51.475771 vm02 vender[741]: bill.go:378: escrow result code=80
Mar 17 10:00:51.476549 vm02 vender[741]: state-machine.go:208: debug: ui exit FrontSelect -> FrontEnd
Mar 17 10:00:51.476549 vm02 vender[741]: state-machine.go:86: debug: ui enter FrontEnd
Mar 17 10:00:51.476549 vm02 vender[741]: state-machine.go:208: debug: ui exit FrontEnd -> FrontBegin
Mar 17 10:00:51.476549 vm02 vender[741]: state-machine.go:86: debug: ui enter FrontBegin
Mar 17 10:00:51.476549 vm02 vender[741]: state-machine.go:157: state=StateFrontBegin
Mar 17 10:00:51.485252 vm02 vender[741]: engine.go:223: debug: engine.ExecList tag=on_front_begin list=[ evend.valve.set_temp_hot_config evend.cup.light_on ]
Mar 17 10:00:51.535708 vm02 vender[741]: state-machine.go:208: debug: ui exit FrontBegin -> FrontSelect
Mar 17 10:00:51.535708 vm02 vender[741]: state-machine.go:86: debug: ui enter FrontSelect
Mar 17 10:00:51.537046 vm02 vender[741]: accept.go:53: debug: money.accept-credit maxConfig=100 maxPrice=45 available=0 -> limit=100

mega (parse error)

-- бабло не возвращает --
: mega.go:486: error: mega-client Parse buf=440c01026e68100100120159110054000002020202020202: frame=440c01026e68100100120159110054000002020202020202 padding
: api.go:39: debug: tele.Error: github.com/temoto/vender/hardware/mega-client/protocol.go:55: frame=440c01026e68100100120159110054000002020202020202 padding
: github.com/temoto/vender/hardware/mega-client/mega.go:486: mega-client Parse buf=440c01026e68100100120159110054000002020202020202
: io_mega.go:103: fatal: mdb.mega.Tx CRITICAL request=cb: CRITICAL mega protocol error
: vender.service: Main process exited, code=exited, status=1/FAILURE
: + [[ exit-code != success ]]
: + /bin/systemctl start vender-broken.service
-- end бабло не возвращает --

mega-client Parse buf=440c0102e5831001006402b6220166000202020202020202: frame=440c0102e5831001006402b6220166000202020202020202 padding=02020202 not valid
mega-client handshake unexpected response=OK clock10u=587550us,mdb_result=SUCCESS:00,mdb_duration=3470us,mdb_data= debug=440c0102e58310010012015b1100b3
critical daemon broken mode

config: per-key default values / include overrides

As configs merging (include mechanic) is implemented right now, whole block will override parent block.

# vender.hcl
ui {
  front {
    msg_intro = "hello"
    msg_wait = "please wait"
  }
}
include "local.hcl" {}

# local.hcl
ui {
  front {
    msg_intro = "welcome"
  }
}

Yields config.UI.Front.MsgIntro="welcome" MsgWait=""

Should be config.UI.Front.MsgIntro="welcome" MsgWait="please wait"

Options to explore: hcl2, toml, lua.

bill ict (мотор укладчика слабо крутит. деньги не засчитывает. купюрник не принимает)

Apr 24 13:17:11.642821 vm11 vender[2109]: bill.working=false
Apr 24 13:17:13.567597 vm11 vender[2109]: escrow bill:100
Apr 24 13:17:13.567597 vm11 vender[2109]: client.working=true
Apr 24 13:17:13.572636 vm11 vender[2109]: client.working.time=24 Apr 13:17:13
Apr 24 13:17:13.572636 vm11 vender[2109]: --- client activity begin ---
Apr 24 13:17:18.937816 vm11 vender[2109]: bill.go:176: bill.poll/info: status=Info cashbox=false nominal=0 count=0 hwcode=a0 err=
Apr 24 13:17:19.152643 vm11 vender[2109]: escrow bill:100
Apr 24 13:17:19.180659 vm11 vender[2109]: stacked bill:100
Apr 24 13:17:19.392942 vm11 vender[2109]: bill.working=true

Coges (pool timeout) непонятно выдал или нет. (проверить с выдачей большого количества)

Apr 27 15:45:00.093831 vm21 vender[24603]: Display.L1=спасибо
Apr 27 15:45:00.093831 vm21 vender[24603]: Display.L2=готовлю
Apr 27 15:45:20.353531 vm21 vender[24603]: api.go:39: debug: tele.Error: github.com/temoto/vender/hardware/mdb/device.go:247: coin.payout/poll-loop timeout
Apr 27 15:45:20.361078 vm21 vender[24603]: api.go:195: debug: money.payout coin total dispensed=0
Apr 27 15:45:20.361078 vm21 vender[24603]: api.go:104: error: money.withdraw-prepare CRITICAL change err=money.withdraw-prepare: debt=70: coin.give: coin.payout/poll-loop timeout
Apr 27 15:45:20.361078 vm21 vender[24603]: api.go:39: debug: tele.Error: money.withdraw-prepare CRITICAL change err=money.withdraw-prepare: debt=70: coin.give: coin.payout/poll-loop timeout
Apr 27 15:45:20.365095 vm21 vender[24603]: api.go:39: debug: tele.Error: github.com/temoto/vender/hardware/mdb/device.go:247: coin.payout/poll-loop timeout
Apr 27 15:45:20.365095 vm21 vender[24603]: github.com/temoto/vender/hardware/mdb/coin/dispense.go:53: coin.give
Apr 27 15:45:20.365095 vm21 vender[24603]: github.com/temoto/vender/internal/money/api.go:198: debt=70
Apr 27 15:45:20.365095 vm21 vender[24603]: github.com/temoto/vender/internal/money/api.go:103: money.withdraw-prepare
Apr 27 15:45:20.378157 vm21 vender[24603]: api.go:121: error: money.withdraw-prepare CRITICAL amount=30 dirty=100
Apr 27 15:45:20.379109 vm21 vender[24603]: api.go:39: debug: tele.Error: money.withdraw-prepare CRITICAL amount=30 dirty=100
Apr 27 15:45:57.453463 vm21 vender[24603]: api.go:135: debug: money.withdraw-commit amount=30 dirty=100

mega (UART_READ_UNEXPECTED)

May 12 10:55:48.304452 vm16 vender[4457]: Display.L1=спасибо
May 12 10:55:48.304452 vm16 vender[4457]: Display.L2=готовлю
May 12 10:55:55.905914 vm16 vender[4457]: api.go:195: debug: money.payout coin total dispensed=83
May 12 10:56:33.291880 vm16 vender[4457]: mega.go:242: mega-client stray UART_READ_UNEXPECTED likely caused by electrical noise, add filter packet=OK clock10u=548240us,mdb_result=UART_READ_UNEXPECTED:0d,mdb_duration=547850us,mdb_data= debug=440c0102d62810100d12d601110000
May 12 10:56:33.342068 vm16 vender[4457]: persist.go:93: debug: persist inventory storage.write duration=28.332238ms
May 12 10:56:33.342973 vm16 vender[4457]: ui-front.go:354: debug: ui-front selected=menu code=6 price=1700(raw) name='кофе со сливками и сахаром' end err=evend.mixer.move:61->57/wait-done/poll-loop: evend.mixer(c8) POLL=050b unexpected
May 12 10:56:33.380893 vm16 vender[4457]: Display.L1=
May 12 10:56:33.380893 vm16 vender[4457]: Display.L2=ОШИБКА

valve poll

api.go:39: debug: tele.Error: github.com/temoto/vender/hardware/mdb/evend/generic.go:94: evend.valve(c0) POLL=30 unexpected

отдает сдачу и отключается по ошибке

CoinCo (PAYOUT POLL)

ошибка при выдаче (застряла двушка, и заблокировала мотор выдачи 1р и 2р).

dispense.go:294: error: PLEASE REPORT PAYOUT POLL response=020407 pi={ 0 Busy 0 false 0}
dispense.go:71: error: coin.give dispensed=2 < requested=3 debt=1
api.go:195: debug: money.payout coin total dispensed=7
...
dispense.go:71: error: coin.give dispensed=80 < requested=83 debt=3
api.go:195: debug: money.payout coin total dispensed=85
...
dispense.go:71: error: coin.give dispensed=0 < requested=3 debt=3
debug: money.payout coin total dispensed=5

Cup (PLEASE REPORT PAYOUT POLL)

Jun 30 23:00:12 vm02 vender[12443]: dispense.go:294: error: PLEASE REPORT PAYOUT POLL response=0102 pi={ 0 ReturnRequest 0 false 0}

PLEASE REPORT PAYOUT POLL response=0102 pi={ 0 ReturnRequest 0 false 0}

mega ( неправильный CRC )

Apr 07 11:41:05 vm18 vender[1068]: mega.go:486: error: mega-client Parse buf=440c0102b9a210010012015e11009c000101010101010101: frame=440c0102b9a210010012015e11009c crc=9c actual=dc not
Apr 07 11:41:05 vm18 vender[1068]: io_mega.go:104: fatal: mdb.mega.Tx CRITICAL request=33: CRITICAL mega protocol error

mega (padding=not valid)

io_mega.go:109: error: mdb.mega.Tx request=33: command=440208331a: frame=040000000001fe343b2405fdfdfdfdfdfdfdfdfdfdfdfd padding=fdfdfdfd not valid

mdb.mega.Tx request=33: command=440208331a: frame=040000000001fe343b2405fdfdfdfdfdfdfdfdfdfdfdfd padding=fdfdfdfd not valid
bill tx request=33 state=Online: mdb.Tx send=33 recv=: mdb.mega.Tx request=33: command=440208331a: frame=040000000001fe343b2405fdfdfdfdfdfdfdfdfdfdfdfd padding=fdfdfdfd not valid

valve poll (POLL=30)

evend.valve.pour_espresso/wait-done/poll-loop: evend.valve(c0) POLL=30 unexpected

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.