[{"data":1,"prerenderedAt":1478},["ShallowReactive",2],{"manifest":3,"hreflang-alternates":1339,"doc-de-volang\u002Flanguage":1344},{"site":4,"branding":6,"contact":8,"organization_schema":10,"languages":60,"website":71,"docs":243,"blog":1243},{"title":5},"Voldeno",{"logo":7,"company_name":5},"\u002Fimages\u002Flogo\u002Flogo_310.png",{"email":9},"contact@voldeno.com",{"schema_name":5,"legal_name":11,"founding_date":12,"tax_id":13,"identifiers":14,"address":21,"primary_email":9,"knows_about":26,"contact_points":44,"contact_point_available_languages":56},"Voldeno sp. z o.o.","2024","PL7252346262",[15,18],{"name":16,"value":17},"KRS","0001123648",{"name":19,"value":20},"REGON","52946949200000",{"street_address":22,"address_locality":23,"postal_code":24,"address_country":25},"Ogrodowa 8, Lobby B, 3p.","Łódź","91-062","PL",{"en":27,"pl":34,"de":39},[28,29,30,31,32,33],"Smart Home","Smart Home Systems","Smart Home Automation","Building Automation","IoT","Home Automation System",[35,28,36,37,32,38],"Inteligentny dom","System Smart Home","Automatyka budynkowa","System automatyki domowej",[28,40,41,42,32,43],"Smart-Home-Systeme","Smart-Home-Automatisierung","Gebäudeautomation","Hausautomationssystem",[45,48,51,54],{"email":46,"contact_type":47},"support@voldeno.com","technical support",{"email":49,"contact_type":50},"sales@voldeno.com","sales",{"email":52,"contact_type":53},"partners@voldeno.com","partnerships",{"email":9,"contact_type":55},"customer service",[57,58,59],"Polish","English","German",[61,65,68],{"code":62,"name":63,"default":64},"pl","Polski",true,{"code":66,"name":58,"default":67},"en",false,{"code":69,"name":70,"default":67},"de","Deutsch",{"enabled":64,"navigation":72,"path_keys":205,"section_index_slugs":233},{"de":73,"pl":130,"en":169},[74,80,86,92,102,108,114,125],{"title":75,"slug":76,"path":77,"order":78,"template":79},"Voldeno: Smart Home, Gebäudeautomation","index","de\u002Findex",0,"home",{"title":81,"slug":82,"path":83,"order":84,"template":85},"Ihr Zuhause","ihr-zuhause","de\u002Fihr-zuhause",1,"homeowners",{"title":87,"slug":88,"path":89,"order":90,"template":91},"Für Fachbetriebe","fuer-fachbetriebe","de\u002Ffuer-fachbetriebe",2,"professionals",{"title":93,"slug":94,"path":95,"order":96,"children":97},"Produkte","produkte","de\u002Fprodukte",3,[98],{"title":99,"slug":76,"path":100,"order":84,"template":101},"Smart-Home-Produkte​ von Voldeno","de\u002Fprodukte\u002Findex","products",{"title":103,"slug":104,"path":105,"order":106,"template":107},"Kontakt","kontakt","de\u002Fkontakt",4,"contact",{"title":109,"slug":110,"path":111,"order":112,"template":113},"Über uns","ueber-uns","de\u002Fueber-uns",5,"about",{"title":115,"slug":116,"path":117,"order":118,"children":119},"Rechtliches","rechtliches","de\u002Frechtliches",6,[120],{"title":121,"slug":122,"path":123,"order":84,"template":124},"Datenschutzerklärung","privacy-policy","de\u002Frechtliches\u002Fprivacy-policy","page",{"title":126,"slug":127,"path":128,"order":129},"Projekte","projekte","de\u002Fprojekte",999,[131,134,138,142,150,152,156,165],{"title":132,"slug":76,"path":133,"order":78,"template":79},"Smart Home, Automatyka budynkowa - Voldeno","pl\u002Findex",{"title":135,"slug":136,"path":137,"order":84,"template":85},"Twój Dom","twoj-dom","pl\u002Ftwoj-dom",{"title":139,"slug":140,"path":141,"order":90,"template":91},"Dla Profesjonalistów","dla-profesjonalistow","pl\u002Fdla-profesjonalistow",{"title":143,"slug":144,"path":145,"order":96,"children":146},"Produkty","produkty","pl\u002Fprodukty",[147],{"title":148,"slug":76,"path":149,"order":84,"template":101},"Inteligentne produkty​ Smart Home Voldeno","pl\u002Fprodukty\u002Findex",{"title":103,"slug":104,"path":151,"order":106,"template":107},"pl\u002Fkontakt",{"title":153,"slug":154,"path":155,"order":112,"template":113},"O nas","o-nas","pl\u002Fo-nas",{"title":157,"slug":158,"path":159,"order":118,"children":160},"Prawne","prawne","pl\u002Fprawne",[161],{"title":162,"slug":163,"path":164,"order":84,"template":124},"Polityka prywatności","polityka-prywatnosci","pl\u002Fprawne\u002Fpolityka-prywatnosci",{"title":166,"slug":167,"path":168,"order":129},"Realizacje","realizacje","pl\u002Frealizacje",[170,173,177,180,187,190,193,201],{"title":171,"slug":76,"path":172,"order":78,"template":79},"Voldeno: Smart Home, Building Automation","en\u002Findex",{"title":174,"slug":175,"path":176,"order":84,"template":85},"Your Home","your-home","en\u002Fyour-home",{"title":178,"slug":91,"path":179,"order":90,"template":91},"For Professionals","en\u002Fprofessionals",{"title":181,"slug":101,"path":182,"order":96,"children":183},"Products","en\u002Fproducts",[184],{"title":185,"slug":76,"path":186,"order":84,"template":101},"Smart Home Products​ from Voldeno","en\u002Fproducts\u002Findex",{"title":188,"slug":107,"path":189,"order":106,"template":107},"Contact","en\u002Fcontact",{"title":191,"slug":113,"path":192,"order":112,"template":113},"About Us","en\u002Fabout",{"title":194,"slug":195,"path":196,"order":118,"children":197},"Legal","legal","en\u002Flegal",[198],{"title":199,"slug":122,"path":200,"order":84,"template":124},"Privacy Policy","en\u002Flegal\u002Fprivacy-policy",{"title":202,"slug":203,"path":204,"order":129},"Projects","projects","en\u002Fprojects",{"module_1wire":206,"module_hub":210,"module_analog_input":214,"downloads":218,"module_relay":221,"privacy":225,"module_io":229},{"pl":207,"de":208,"en":209},"produkty\u002F1wire","produkte\u002F1wire","products\u002F1wire",{"en":211,"pl":212,"de":213},"products\u002Fhub","produkty\u002Fhub","produkte\u002Fhub",{"de":215,"pl":216,"en":217},"produkte\u002Fanalog-input","produkty\u002Fanalog-input","products\u002Fanalog-input",{"de":219,"pl":220,"en":219},"downloads","pobieranie",{"en":222,"pl":223,"de":224},"products\u002Frelay","produkty\u002Frelay","produkte\u002Frelay",{"pl":226,"de":227,"en":228},"prawne\u002Fpolityka-prywatnosci","rechtliches\u002Fprivacy-policy","legal\u002Fprivacy-policy",{"en":230,"pl":231,"de":232},"products\u002Fio","produkty\u002Fio","produkte\u002Fio",{"de":234,"en":237,"pl":240},{"projekte":235,"produkte":236},"projekte\u002Findex","produkte\u002Findex",{"products":238,"projects":239},"products\u002Findex","projects\u002Findex",{"realizacje":241,"produkty":242},"realizacje\u002Findex","produkty\u002Findex",{"enabled":64,"navigation":244,"section_redirects":1205},{"de":245,"pl":696,"en":958},[246,267,276,301,314,631,645,659,681,691],{"title":247,"slug":248,"path":249,"order":84,"children":250},"Erste Schritte","erste-schritte","de\u002Fdocs\u002Ferste-schritte",[251,255,259,263],{"title":252,"slug":253,"path":254,"order":84},"Grundlegende Konzepte und Terminologie","concepts","de\u002Fdocs\u002Ferste-schritte\u002Fconcepts",{"title":256,"slug":257,"path":258,"order":90},"Systemüberblick für Installateure","system-overview","de\u002Fdocs\u002Ferste-schritte\u002Fsystem-overview",{"title":260,"slug":261,"path":262,"order":96},"Logik in Voldeno Studio von Grund auf definieren","logik-von-grund-auf-definieren","de\u002Fdocs\u002Ferste-schritte\u002Flogik-von-grund-auf-definieren",{"title":264,"slug":265,"path":266,"order":106},"Volang und VolangVM: warum ein Smart Home eine eigene Automatisierungssprache braucht","volang-and-volangvm","de\u002Fdocs\u002Ferste-schritte\u002Fvolang-and-volangvm",{"title":268,"slug":269,"path":270,"order":90,"children":271},"Systemarchitektur","systemarchitektur","de\u002Fdocs\u002Fsystemarchitektur",[272],{"title":273,"slug":274,"path":275,"order":84},"Sicherheitsarchitektur","security","de\u002Fdocs\u002Fsystemarchitektur\u002Fsecurity",{"title":277,"slug":278,"path":279,"order":96,"children":280},"Module und Peripherie","module","de\u002Fdocs\u002Fmodule",[281,285,289,293,297],{"title":282,"slug":283,"path":284,"order":84},"Verkabelung des Hub-Moduls","hub-wiring","de\u002Fdocs\u002Fmodule\u002Fhub-wiring",{"title":286,"slug":287,"path":288,"order":90},"Verkabelung des I\u002FO-Moduls","io-wiring","de\u002Fdocs\u002Fmodule\u002Fio-wiring",{"title":290,"slug":291,"path":292,"order":96},"Verkabelung des Relay-Moduls","relay-wiring","de\u002Fdocs\u002Fmodule\u002Frelay-wiring",{"title":294,"slug":295,"path":296,"order":106},"Verkabelung des 1-Wire-Moduls","1wire-wiring","de\u002Fdocs\u002Fmodule\u002F1wire-wiring",{"title":298,"slug":299,"path":300,"order":112},"Verkabelung des Analog-Input-Moduls","analog-input-wiring","de\u002Fdocs\u002Fmodule\u002Fanalog-input-wiring",{"title":302,"slug":303,"path":304,"order":106,"children":305},"Verkabelungsrichtlinien","verkabelung","de\u002Fdocs\u002Fverkabelung",[306,310],{"title":307,"slug":308,"path":309,"order":84},"Bustopologie und Verkabelung","bus-topology","de\u002Fdocs\u002Fverkabelung\u002Fbus-topology",{"title":311,"slug":312,"path":313,"order":90},"Dimensionierung und Verteilung der Spannungsversorgung","power-supply","de\u002Fdocs\u002Fverkabelung\u002Fpower-supply",{"title":315,"slug":316,"path":317,"order":112,"children":318},"Logikbausteine","logikbausteine","de\u002Fdocs\u002Flogikbausteine",[319,325,376,616],{"title":320,"slug":321,"path":322,"order":78,"template":323,"translation_key":324},"Übersicht","uebersicht","de\u002Fdocs\u002Flogikbausteine\u002Fuebersicht","logic-block-index","logic-blocks-overview",{"title":326,"slug":327,"path":328,"order":84,"children":329},"Eingänge","input","de\u002Fdocs\u002Flogikbausteine\u002Finput",[330,336,341,346,351,356,361,366,371],{"title":331,"slug":332,"path":333,"order":78,"template":334,"translation_key":335},"Binary input","binary_input","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fbinary_input","logic-block","logic-block-binary_input",{"title":337,"slug":338,"path":339,"order":78,"template":334,"translation_key":340},"Boolean constant","boolean_constant","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fboolean_constant","logic-block-boolean_constant",{"title":342,"slug":343,"path":344,"order":78,"template":334,"translation_key":345},"Numeric constant","numeric_constant","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fnumeric_constant","logic-block-numeric_constant",{"title":347,"slug":348,"path":349,"order":78,"template":334,"translation_key":350},"Numeric input","numeric_input","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fnumeric_input","logic-block-numeric_input",{"title":352,"slug":353,"path":354,"order":78,"template":334,"translation_key":355},"Mode monitor","operation_mode_monitor","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Foperation_mode_monitor","logic-block-operation_mode_monitor",{"title":357,"slug":358,"path":359,"order":78,"template":334,"translation_key":360},"PulseAt","pulse_at","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fpulse_at","logic-block-pulse_at",{"title":362,"slug":363,"path":364,"order":78,"template":334,"translation_key":365},"Schedule","schedule","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fschedule","logic-block-schedule",{"title":367,"slug":368,"path":369,"order":78,"template":334,"translation_key":370},"String constant","string_constant","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fstring_constant","logic-block-string_constant",{"title":372,"slug":373,"path":374,"order":78,"template":334,"translation_key":375},"Switch","switch","de\u002Fdocs\u002Flogikbausteine\u002Finput\u002Fswitch","logic-block-switch",{"title":377,"slug":378,"path":379,"order":90,"children":380},"Verarbeitung","process","de\u002Fdocs\u002Flogikbausteine\u002Fprocess",[381,386,391,396,401,406,411,416,421,426,431,436,441,446,451,456,461,466,471,476,481,486,491,496,501,506,511,516,521,526,531,536,541,546,551,556,561,566,571,576,581,586,591,596,601,606,611],{"title":382,"slug":383,"path":384,"order":78,"template":334,"translation_key":385},"Binary limiter","binary_limiter","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fbinary_limiter","logic-block-binary_limiter",{"title":387,"slug":388,"path":389,"order":78,"template":334,"translation_key":390},"Boolean to string","boolean_to_string","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fboolean_to_string","logic-block-boolean_to_string",{"title":392,"slug":393,"path":394,"order":78,"template":334,"translation_key":395},"Climate regulator","climate_regulator","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fclimate_regulator","logic-block-climate_regulator",{"title":397,"slug":398,"path":399,"order":78,"template":334,"translation_key":400},"Climate regulator hub","climate_regulator_hub","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fclimate_regulator_hub","logic-block-climate_regulator_hub",{"title":402,"slug":403,"path":404,"order":78,"template":334,"translation_key":405},"Delay","delay","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fdelay","logic-block-delay",{"title":407,"slug":408,"path":409,"order":78,"template":334,"translation_key":410},"Delayed Pulse","delayed_pulse","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fdelayed_pulse","logic-block-delayed_pulse",{"title":412,"slug":413,"path":414,"order":78,"template":334,"translation_key":415},"Door, window","door_window_monitor","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fdoor_window_monitor","logic-block-door_window_monitor",{"title":417,"slug":418,"path":419,"order":78,"template":334,"translation_key":420},"Edge detector","edge_detector","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fedge_detector","logic-block-edge_detector",{"title":422,"slug":423,"path":424,"order":78,"template":334,"translation_key":425},"HTTP Request","http_request","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fhttp_request","logic-block-http_request",{"title":427,"slug":428,"path":429,"order":78,"template":334,"translation_key":430},"Hysteresis","hysteresis","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fhysteresis","logic-block-hysteresis",{"title":432,"slug":433,"path":434,"order":78,"template":334,"translation_key":435},"Irrigation","irrigation","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Firrigation","logic-block-irrigation",{"title":437,"slug":438,"path":439,"order":78,"template":334,"translation_key":440},"JSON Get Boolean","json_get_boolean","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fjson_get_boolean","logic-block-json_get_boolean",{"title":442,"slug":443,"path":444,"order":78,"template":334,"translation_key":445},"JSON Get Number","json_get_number","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fjson_get_number","logic-block-json_get_number",{"title":447,"slug":448,"path":449,"order":78,"template":334,"translation_key":450},"JSON Get String","json_get_string","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fjson_get_string","logic-block-json_get_string",{"title":452,"slug":453,"path":454,"order":78,"template":334,"translation_key":455},"Level to pulse","level_to_pulse","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Flevel_to_pulse","logic-block-level_to_pulse",{"title":457,"slug":458,"path":459,"order":78,"template":334,"translation_key":460},"Logic::And","logic_and","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Flogic_and","logic-block-logic_and",{"title":462,"slug":463,"path":464,"order":78,"template":334,"translation_key":465},"Logic::Not","logic_not","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Flogic_not","logic-block-logic_not",{"title":467,"slug":468,"path":469,"order":78,"template":334,"translation_key":470},"Logic::Or","logic_or","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Flogic_or","logic-block-logic_or",{"title":472,"slug":473,"path":474,"order":78,"template":334,"translation_key":475},"Math::Abs","math_abs","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_abs","logic-block-math_abs",{"title":477,"slug":478,"path":479,"order":78,"template":334,"translation_key":480},"Math::Add","math_add","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_add","logic-block-math_add",{"title":482,"slug":483,"path":484,"order":78,"template":334,"translation_key":485},"Math::Average","math_average","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_average","logic-block-math_average",{"title":487,"slug":488,"path":489,"order":78,"template":334,"translation_key":490},"Math::Ceil","math_ceil","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_ceil","logic-block-math_ceil",{"title":492,"slug":493,"path":494,"order":78,"template":334,"translation_key":495},"Math::Divide","math_divide","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_divide","logic-block-math_divide",{"title":497,"slug":498,"path":499,"order":78,"template":334,"translation_key":500},"Math::Floor","math_floor","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_floor","logic-block-math_floor",{"title":502,"slug":503,"path":504,"order":78,"template":334,"translation_key":505},"Math::Max","math_max","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_max","logic-block-math_max",{"title":507,"slug":508,"path":509,"order":78,"template":334,"translation_key":510},"Math::Min","math_min","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_min","logic-block-math_min",{"title":512,"slug":513,"path":514,"order":78,"template":334,"translation_key":515},"Math::Modulo","math_modulo","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_modulo","logic-block-math_modulo",{"title":517,"slug":518,"path":519,"order":78,"template":334,"translation_key":520},"Math::Multiply","math_multiply","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_multiply","logic-block-math_multiply",{"title":522,"slug":523,"path":524,"order":78,"template":334,"translation_key":525},"Math::Random","math_random","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_random","logic-block-math_random",{"title":527,"slug":528,"path":529,"order":78,"template":334,"translation_key":530},"Math::Round","math_round","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_round","logic-block-math_round",{"title":532,"slug":533,"path":534,"order":78,"template":334,"translation_key":535},"Math::Subtract","math_subtract","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmath_subtract","logic-block-math_subtract",{"title":537,"slug":538,"path":539,"order":78,"template":334,"translation_key":540},"Motor axis","motor_axis","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmotor_axis","logic-block-motor_axis",{"title":542,"slug":543,"path":544,"order":78,"template":334,"translation_key":545},"Moving average","moving_average","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fmoving_average","logic-block-moving_average",{"title":547,"slug":548,"path":549,"order":78,"template":334,"translation_key":550},"Number to string","number_to_string","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fnumber_to_string","logic-block-number_to_string",{"title":552,"slug":553,"path":554,"order":78,"template":334,"translation_key":555},"Numeric latch","numeric_latch","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fnumeric_latch","logic-block-numeric_latch",{"title":557,"slug":558,"path":559,"order":78,"template":334,"translation_key":560},"Numeric predicate","numeric_predicate","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fnumeric_predicate","logic-block-numeric_predicate",{"title":562,"slug":563,"path":564,"order":78,"template":334,"translation_key":565},"Numeric throttle","numeric_throttle","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fnumeric_throttle","logic-block-numeric_throttle",{"title":567,"slug":568,"path":569,"order":78,"template":334,"translation_key":570},"PubSub::Publish","pubsub","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fpubsub","logic-block-pubsub",{"title":572,"slug":573,"path":574,"order":78,"template":334,"translation_key":575},"Pulse counter","pulse_counter","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fpulse_counter","logic-block-pulse_counter",{"title":577,"slug":578,"path":579,"order":78,"template":334,"translation_key":580},"Pulse gate","pulse_gate","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fpulse_gate","logic-block-pulse_gate",{"title":582,"slug":583,"path":584,"order":78,"template":334,"translation_key":585},"Pulse throttle","pulse_throttle","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fpulse_throttle","logic-block-pulse_throttle",{"title":587,"slug":588,"path":589,"order":78,"template":334,"translation_key":590},"Sequencer","sequencer","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fsequencer","logic-block-sequencer",{"title":592,"slug":593,"path":594,"order":78,"template":334,"translation_key":595},"Shading","shading","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fshading","logic-block-shading",{"title":597,"slug":598,"path":599,"order":78,"template":334,"translation_key":600},"String format","string_format","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fstring_format","logic-block-string_format",{"title":602,"slug":603,"path":604,"order":78,"template":334,"translation_key":605},"String latch","string_latch","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fstring_latch","logic-block-string_latch",{"title":607,"slug":608,"path":609,"order":78,"template":334,"translation_key":610},"Toggle","toggle","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Ftoggle","logic-block-toggle",{"title":612,"slug":613,"path":614,"order":78,"template":334,"translation_key":615},"Variable Delayed Pulse","variable_delayed_pulse","de\u002Fdocs\u002Flogikbausteine\u002Fprocess\u002Fvariable_delayed_pulse","logic-block-variable_delayed_pulse",{"title":617,"slug":618,"path":619,"order":96,"children":620},"Ausgänge","output","de\u002Fdocs\u002Flogikbausteine\u002Foutput",[621,626],{"title":622,"slug":623,"path":624,"order":78,"template":334,"translation_key":625},"Mode controller","operation_mode_controller","de\u002Fdocs\u002Flogikbausteine\u002Foutput\u002Foperation_mode_controller","logic-block-operation_mode_controller",{"title":627,"slug":628,"path":629,"order":78,"template":334,"translation_key":630},"Relay","relay","de\u002Fdocs\u002Flogikbausteine\u002Foutput\u002Frelay","logic-block-relay",{"title":632,"slug":633,"path":634,"order":118,"children":635},"Programmiersprache Volang","volang","de\u002Fdocs\u002Fvolang",[636,640],{"title":637,"slug":638,"path":639,"order":84},"Die Sprache Volang","language","de\u002Fdocs\u002Fvolang\u002Flanguage",{"title":641,"slug":642,"path":643,"order":90,"template":644},"Standardbibliothek","stdlib","de\u002Fdocs\u002Fvolang\u002Fstdlib","api-reference",{"title":646,"slug":647,"path":648,"order":649,"children":650},"Software und Werkzeuge","software","de\u002Fdocs\u002Fsoftware",7,[651,655],{"title":652,"slug":653,"path":654,"order":84},"Voldeno Studio - Installation und Rundgang","studio","de\u002Fdocs\u002Fsoftware\u002Fstudio",{"title":656,"slug":657,"path":658,"order":90},"Voldeno Studio - Zeitpläne","schedules","de\u002Fdocs\u002Fsoftware\u002Fschedules",{"title":660,"slug":661,"path":662,"order":663,"children":664},"Ratgeber und Anleitungen","ratgeber","de\u002Fdocs\u002Fratgeber",8,[665,669,673,677],{"title":666,"slug":667,"path":668,"order":84},"Was ist ein Smart Home und wie funktioniert es?","was-ist-ein-smart-home","de\u002Fdocs\u002Fratgeber\u002Fwas-ist-ein-smart-home",{"title":670,"slug":671,"path":672,"order":90},"Welches Smart-Home-System sollte man wählen? Ein praktischer Leitfaden","smart-home-system-auswaehlen","de\u002Fdocs\u002Fratgeber\u002Fsmart-home-system-auswaehlen",{"title":674,"slug":675,"path":676,"order":96},"Was kostet ein Smart Home? Drei Voldeno-Installationsvarianten mit Modulen und Preisen","was-kostet-ein-smart-home","de\u002Fdocs\u002Fratgeber\u002Fwas-kostet-ein-smart-home",{"title":678,"slug":679,"path":680,"order":106},"Die 7 häufigsten Fehler bei der Smart-Home-Planung","smart-home-planungsfehler","de\u002Fdocs\u002Fratgeber\u002Fsmart-home-planungsfehler",{"title":682,"slug":683,"path":684,"order":685,"children":686},"Fehlerbehebung und Diagnose","fehlerbehebung","de\u002Fdocs\u002Ffehlerbehebung",9,[687],{"title":688,"slug":689,"path":690,"order":84},"Fehlerbehebung bei der Bus-Kommunikation","bus-communication","de\u002Fdocs\u002Ffehlerbehebung\u002Fbus-communication",{"title":692,"slug":693,"path":694,"order":695},"Häufig gestellte Fragen","faq","de\u002Fdocs\u002Ffaq",10,[697,718,727,752,765,902,914,925,946,955],{"title":698,"slug":699,"path":700,"order":84,"children":701},"Pierwsze kroki","pierwsze-kroki","pl\u002Fdocs\u002Fpierwsze-kroki",[702,706,710,714],{"title":703,"slug":704,"path":705,"order":84},"Podstawowe pojęcia i terminologia","pojecia","pl\u002Fdocs\u002Fpierwsze-kroki\u002Fpojecia",{"title":707,"slug":708,"path":709,"order":90},"Przegląd systemu dla instalatorów","przeglad-systemu","pl\u002Fdocs\u002Fpierwsze-kroki\u002Fprzeglad-systemu",{"title":711,"slug":712,"path":713,"order":96},"Jak zdefiniować logikę w Voldeno Studio od zera","definiowanie-logiki-w-voldeno-studio","pl\u002Fdocs\u002Fpierwsze-kroki\u002Fdefiniowanie-logiki-w-voldeno-studio",{"title":715,"slug":716,"path":717,"order":106},"Volang i VolangVM: po co inteligentny dom potrzebuje własnego języka automatyki","volang-i-volangvm","pl\u002Fdocs\u002Fpierwsze-kroki\u002Fvolang-i-volangvm",{"title":719,"slug":720,"path":721,"order":90,"children":722},"Architektura systemu","architektura-systemu","pl\u002Fdocs\u002Farchitektura-systemu",[723],{"title":724,"slug":725,"path":726,"order":84},"Architektura bezpieczeństwa","bezpieczenstwo","pl\u002Fdocs\u002Farchitektura-systemu\u002Fbezpieczenstwo",{"title":728,"slug":729,"path":730,"order":96,"children":731},"Moduły i peryferia","moduly","pl\u002Fdocs\u002Fmoduly",[732,736,740,744,748],{"title":733,"slug":734,"path":735,"order":84},"Okablowanie modułu HUB","okablowanie-hub","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-hub",{"title":737,"slug":738,"path":739,"order":90},"Okablowanie modułu I\u002FO","okablowanie-io","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-io",{"title":741,"slug":742,"path":743,"order":96},"Okablowanie modułu RELAY","okablowanie-relay","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-relay",{"title":745,"slug":746,"path":747,"order":106},"Okablowanie modułu 1-Wire","okablowanie-1wire","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-1wire",{"title":749,"slug":750,"path":751,"order":112},"Okablowanie modułu Analog Input","okablowanie-analog-input","pl\u002Fdocs\u002Fmoduly\u002Fokablowanie-analog-input",{"title":753,"slug":754,"path":755,"order":106,"children":756},"Wytyczne okablowania","okablowanie","pl\u002Fdocs\u002Fokablowanie",[757,761],{"title":758,"slug":759,"path":760,"order":84},"Topologia i okablowanie magistrali","topologia-magistrali","pl\u002Fdocs\u002Fokablowanie\u002Ftopologia-magistrali",{"title":762,"slug":763,"path":764,"order":90},"Dobór i dystrybucja zasilania","zasilanie","pl\u002Fdocs\u002Fokablowanie\u002Fzasilanie",{"title":766,"slug":767,"path":768,"order":112,"children":769},"Bloki logiczne","bloki-logiczne","pl\u002Fdocs\u002Fbloki-logiczne",[770,774,796,894],{"title":771,"slug":772,"path":773,"order":78,"template":323,"translation_key":324},"Przegląd","przeglad","pl\u002Fdocs\u002Fbloki-logiczne\u002Fprzeglad",{"title":775,"slug":327,"path":776,"order":84,"children":777},"Wejścia","pl\u002Fdocs\u002Fbloki-logiczne\u002Finput",[778,780,782,784,786,788,790,792,794],{"title":331,"slug":332,"path":779,"order":78,"template":334,"translation_key":335},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fbinary_input",{"title":337,"slug":338,"path":781,"order":78,"template":334,"translation_key":340},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fboolean_constant",{"title":342,"slug":343,"path":783,"order":78,"template":334,"translation_key":345},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fnumeric_constant",{"title":347,"slug":348,"path":785,"order":78,"template":334,"translation_key":350},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fnumeric_input",{"title":352,"slug":353,"path":787,"order":78,"template":334,"translation_key":355},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Foperation_mode_monitor",{"title":357,"slug":358,"path":789,"order":78,"template":334,"translation_key":360},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fpulse_at",{"title":362,"slug":363,"path":791,"order":78,"template":334,"translation_key":365},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fschedule",{"title":367,"slug":368,"path":793,"order":78,"template":334,"translation_key":370},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fstring_constant",{"title":372,"slug":373,"path":795,"order":78,"template":334,"translation_key":375},"pl\u002Fdocs\u002Fbloki-logiczne\u002Finput\u002Fswitch",{"title":797,"slug":378,"path":798,"order":90,"children":799},"Przetwarzanie","pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess",[800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892],{"title":382,"slug":383,"path":801,"order":78,"template":334,"translation_key":385},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fbinary_limiter",{"title":387,"slug":388,"path":803,"order":78,"template":334,"translation_key":390},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fboolean_to_string",{"title":392,"slug":393,"path":805,"order":78,"template":334,"translation_key":395},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fclimate_regulator",{"title":397,"slug":398,"path":807,"order":78,"template":334,"translation_key":400},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fclimate_regulator_hub",{"title":402,"slug":403,"path":809,"order":78,"template":334,"translation_key":405},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fdelay",{"title":407,"slug":408,"path":811,"order":78,"template":334,"translation_key":410},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fdelayed_pulse",{"title":412,"slug":413,"path":813,"order":78,"template":334,"translation_key":415},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fdoor_window_monitor",{"title":417,"slug":418,"path":815,"order":78,"template":334,"translation_key":420},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fedge_detector",{"title":422,"slug":423,"path":817,"order":78,"template":334,"translation_key":425},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fhttp_request",{"title":427,"slug":428,"path":819,"order":78,"template":334,"translation_key":430},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fhysteresis",{"title":432,"slug":433,"path":821,"order":78,"template":334,"translation_key":435},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Firrigation",{"title":437,"slug":438,"path":823,"order":78,"template":334,"translation_key":440},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fjson_get_boolean",{"title":442,"slug":443,"path":825,"order":78,"template":334,"translation_key":445},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fjson_get_number",{"title":447,"slug":448,"path":827,"order":78,"template":334,"translation_key":450},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fjson_get_string",{"title":452,"slug":453,"path":829,"order":78,"template":334,"translation_key":455},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flevel_to_pulse",{"title":457,"slug":458,"path":831,"order":78,"template":334,"translation_key":460},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flogic_and",{"title":462,"slug":463,"path":833,"order":78,"template":334,"translation_key":465},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flogic_not",{"title":467,"slug":468,"path":835,"order":78,"template":334,"translation_key":470},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Flogic_or",{"title":472,"slug":473,"path":837,"order":78,"template":334,"translation_key":475},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_abs",{"title":477,"slug":478,"path":839,"order":78,"template":334,"translation_key":480},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_add",{"title":482,"slug":483,"path":841,"order":78,"template":334,"translation_key":485},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_average",{"title":487,"slug":488,"path":843,"order":78,"template":334,"translation_key":490},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_ceil",{"title":492,"slug":493,"path":845,"order":78,"template":334,"translation_key":495},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_divide",{"title":497,"slug":498,"path":847,"order":78,"template":334,"translation_key":500},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_floor",{"title":502,"slug":503,"path":849,"order":78,"template":334,"translation_key":505},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_max",{"title":507,"slug":508,"path":851,"order":78,"template":334,"translation_key":510},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_min",{"title":512,"slug":513,"path":853,"order":78,"template":334,"translation_key":515},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_modulo",{"title":517,"slug":518,"path":855,"order":78,"template":334,"translation_key":520},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_multiply",{"title":522,"slug":523,"path":857,"order":78,"template":334,"translation_key":525},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_random",{"title":527,"slug":528,"path":859,"order":78,"template":334,"translation_key":530},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_round",{"title":532,"slug":533,"path":861,"order":78,"template":334,"translation_key":535},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmath_subtract",{"title":537,"slug":538,"path":863,"order":78,"template":334,"translation_key":540},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmotor_axis",{"title":542,"slug":543,"path":865,"order":78,"template":334,"translation_key":545},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fmoving_average",{"title":547,"slug":548,"path":867,"order":78,"template":334,"translation_key":550},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumber_to_string",{"title":552,"slug":553,"path":869,"order":78,"template":334,"translation_key":555},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumeric_latch",{"title":557,"slug":558,"path":871,"order":78,"template":334,"translation_key":560},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumeric_predicate",{"title":562,"slug":563,"path":873,"order":78,"template":334,"translation_key":565},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fnumeric_throttle",{"title":567,"slug":568,"path":875,"order":78,"template":334,"translation_key":570},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpubsub",{"title":572,"slug":573,"path":877,"order":78,"template":334,"translation_key":575},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpulse_counter",{"title":577,"slug":578,"path":879,"order":78,"template":334,"translation_key":580},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpulse_gate",{"title":582,"slug":583,"path":881,"order":78,"template":334,"translation_key":585},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fpulse_throttle",{"title":587,"slug":588,"path":883,"order":78,"template":334,"translation_key":590},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fsequencer",{"title":592,"slug":593,"path":885,"order":78,"template":334,"translation_key":595},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fshading",{"title":597,"slug":598,"path":887,"order":78,"template":334,"translation_key":600},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fstring_format",{"title":602,"slug":603,"path":889,"order":78,"template":334,"translation_key":605},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fstring_latch",{"title":607,"slug":608,"path":891,"order":78,"template":334,"translation_key":610},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Ftoggle",{"title":612,"slug":613,"path":893,"order":78,"template":334,"translation_key":615},"pl\u002Fdocs\u002Fbloki-logiczne\u002Fprocess\u002Fvariable_delayed_pulse",{"title":895,"slug":618,"path":896,"order":96,"children":897},"Wyjścia","pl\u002Fdocs\u002Fbloki-logiczne\u002Foutput",[898,900],{"title":622,"slug":623,"path":899,"order":78,"template":334,"translation_key":625},"pl\u002Fdocs\u002Fbloki-logiczne\u002Foutput\u002Foperation_mode_controller",{"title":627,"slug":628,"path":901,"order":78,"template":334,"translation_key":630},"pl\u002Fdocs\u002Fbloki-logiczne\u002Foutput\u002Frelay",{"title":903,"slug":633,"path":904,"order":118,"children":905},"Język programowania Volang","pl\u002Fdocs\u002Fvolang",[906,910],{"title":907,"slug":908,"path":909,"order":84},"Język Volang","jezyk","pl\u002Fdocs\u002Fvolang\u002Fjezyk",{"title":911,"slug":912,"path":913,"order":90,"template":644},"Biblioteka standardowa","biblioteka-standardowa","pl\u002Fdocs\u002Fvolang\u002Fbiblioteka-standardowa",{"title":915,"slug":916,"path":917,"order":649,"children":918},"Oprogramowanie","oprogramowanie","pl\u002Fdocs\u002Foprogramowanie",[919,922],{"title":920,"slug":653,"path":921,"order":84},"Voldeno Studio - Instalacja i przewodnik","pl\u002Fdocs\u002Foprogramowanie\u002Fstudio",{"title":923,"slug":657,"path":924,"order":90},"Voldeno Studio - Harmonogramy","pl\u002Fdocs\u002Foprogramowanie\u002Fschedules",{"title":926,"slug":927,"path":928,"order":663,"children":929},"Poradniki","poradniki","pl\u002Fdocs\u002Fporadniki",[930,934,938,942],{"title":931,"slug":932,"path":933,"order":84},"Czym jest smart home i jak działa?","czym-jest-smart-home","pl\u002Fdocs\u002Fporadniki\u002Fczym-jest-smart-home",{"title":935,"slug":936,"path":937,"order":90},"Jaki system smart home wybrać? Praktyczny przewodnik","jaki-system-smart-home-wybrac","pl\u002Fdocs\u002Fporadniki\u002Fjaki-system-smart-home-wybrac",{"title":939,"slug":940,"path":941,"order":96},"Ile kosztuje inteligentny dom? Trzy warianty instalacji Voldeno z modułami i cenami","ile-kosztuje-inteligentny-dom","pl\u002Fdocs\u002Fporadniki\u002File-kosztuje-inteligentny-dom",{"title":943,"slug":944,"path":945,"order":106},"7 najczęstszych błędów przy projektowaniu instalacji smart home","bledy-przy-projektowaniu-smart-home","pl\u002Fdocs\u002Fporadniki\u002Fbledy-przy-projektowaniu-smart-home",{"title":947,"slug":948,"path":949,"order":685,"children":950},"Diagnostyka i rozwiązywanie problemów","diagnostyka","pl\u002Fdocs\u002Fdiagnostyka",[951],{"title":952,"slug":953,"path":954,"order":84},"Rozwiązywanie problemów z komunikacją magistrali","komunikacja-magistrali","pl\u002Fdocs\u002Fdiagnostyka\u002Fkomunikacja-magistrali",{"title":956,"slug":693,"path":957,"order":695},"Często zadawane pytania","pl\u002Fdocs\u002Ffaq",[959,977,985,1005,1016,1153,1163,1173,1194,1202],{"title":960,"slug":961,"path":962,"order":84,"children":963},"Getting Started","getting-started","en\u002Fdocs\u002Fgetting-started",[964,967,970,974],{"title":965,"slug":253,"path":966,"order":84},"Core Concepts and Terminology","en\u002Fdocs\u002Fgetting-started\u002Fconcepts",{"title":968,"slug":257,"path":969,"order":90},"System Overview for Installers","en\u002Fdocs\u002Fgetting-started\u002Fsystem-overview",{"title":971,"slug":972,"path":973,"order":96},"How to define logic in Voldeno Studio from scratch","define-logic-in-voldeno-studio","en\u002Fdocs\u002Fgetting-started\u002Fdefine-logic-in-voldeno-studio",{"title":975,"slug":265,"path":976,"order":106},"Volang and VolangVM: why a smart home needs its own automation language","en\u002Fdocs\u002Fgetting-started\u002Fvolang-and-volangvm",{"title":978,"slug":979,"path":980,"order":90,"children":981},"System Architecture","system-architecture","en\u002Fdocs\u002Fsystem-architecture",[982],{"title":983,"slug":274,"path":984,"order":84},"Security Architecture","en\u002Fdocs\u002Fsystem-architecture\u002Fsecurity",{"title":986,"slug":987,"path":988,"order":96,"children":989},"Modules & Peripherals","modules","en\u002Fdocs\u002Fmodules",[990,993,996,999,1002],{"title":991,"slug":283,"path":992,"order":84},"Hub Module Wiring","en\u002Fdocs\u002Fmodules\u002Fhub-wiring",{"title":994,"slug":287,"path":995,"order":90},"I\u002FO Module Wiring","en\u002Fdocs\u002Fmodules\u002Fio-wiring",{"title":997,"slug":291,"path":998,"order":96},"Relay Module Wiring","en\u002Fdocs\u002Fmodules\u002Frelay-wiring",{"title":1000,"slug":295,"path":1001,"order":106},"1-Wire Module Wiring","en\u002Fdocs\u002Fmodules\u002F1wire-wiring",{"title":1003,"slug":299,"path":1004,"order":112},"Analog Input Module Wiring","en\u002Fdocs\u002Fmodules\u002Fanalog-input-wiring",{"title":1006,"slug":1007,"path":1008,"order":106,"children":1009},"Wiring Guidelines","wiring","en\u002Fdocs\u002Fwiring",[1010,1013],{"title":1011,"slug":308,"path":1012,"order":84},"Bus Topology & Wiring","en\u002Fdocs\u002Fwiring\u002Fbus-topology",{"title":1014,"slug":312,"path":1015,"order":90},"Power Supply Sizing and Distribution","en\u002Fdocs\u002Fwiring\u002Fpower-supply",{"title":1017,"slug":1018,"path":1019,"order":112,"children":1020},"Logic Blocks","logic-blocks","en\u002Fdocs\u002Flogic-blocks",[1021,1025,1047,1145],{"title":1022,"slug":1023,"path":1024,"order":78,"template":323,"translation_key":324},"Overview","overview","en\u002Fdocs\u002Flogic-blocks\u002Foverview",{"title":1026,"slug":327,"path":1027,"order":84,"children":1028},"Input","en\u002Fdocs\u002Flogic-blocks\u002Finput",[1029,1031,1033,1035,1037,1039,1041,1043,1045],{"title":331,"slug":332,"path":1030,"order":78,"template":334,"translation_key":335},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fbinary_input",{"title":337,"slug":338,"path":1032,"order":78,"template":334,"translation_key":340},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fboolean_constant",{"title":342,"slug":343,"path":1034,"order":78,"template":334,"translation_key":345},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fnumeric_constant",{"title":347,"slug":348,"path":1036,"order":78,"template":334,"translation_key":350},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fnumeric_input",{"title":352,"slug":353,"path":1038,"order":78,"template":334,"translation_key":355},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Foperation_mode_monitor",{"title":357,"slug":358,"path":1040,"order":78,"template":334,"translation_key":360},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fpulse_at",{"title":362,"slug":363,"path":1042,"order":78,"template":334,"translation_key":365},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fschedule",{"title":367,"slug":368,"path":1044,"order":78,"template":334,"translation_key":370},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fstring_constant",{"title":372,"slug":373,"path":1046,"order":78,"template":334,"translation_key":375},"en\u002Fdocs\u002Flogic-blocks\u002Finput\u002Fswitch",{"title":1048,"slug":378,"path":1049,"order":90,"children":1050},"Process","en\u002Fdocs\u002Flogic-blocks\u002Fprocess",[1051,1053,1055,1057,1059,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143],{"title":382,"slug":383,"path":1052,"order":78,"template":334,"translation_key":385},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fbinary_limiter",{"title":387,"slug":388,"path":1054,"order":78,"template":334,"translation_key":390},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fboolean_to_string",{"title":392,"slug":393,"path":1056,"order":78,"template":334,"translation_key":395},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fclimate_regulator",{"title":397,"slug":398,"path":1058,"order":78,"template":334,"translation_key":400},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fclimate_regulator_hub",{"title":402,"slug":403,"path":1060,"order":78,"template":334,"translation_key":405},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fdelay",{"title":407,"slug":408,"path":1062,"order":78,"template":334,"translation_key":410},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fdelayed_pulse",{"title":412,"slug":413,"path":1064,"order":78,"template":334,"translation_key":415},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fdoor_window_monitor",{"title":417,"slug":418,"path":1066,"order":78,"template":334,"translation_key":420},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fedge_detector",{"title":422,"slug":423,"path":1068,"order":78,"template":334,"translation_key":425},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fhttp_request",{"title":427,"slug":428,"path":1070,"order":78,"template":334,"translation_key":430},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fhysteresis",{"title":432,"slug":433,"path":1072,"order":78,"template":334,"translation_key":435},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Firrigation",{"title":437,"slug":438,"path":1074,"order":78,"template":334,"translation_key":440},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fjson_get_boolean",{"title":442,"slug":443,"path":1076,"order":78,"template":334,"translation_key":445},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fjson_get_number",{"title":447,"slug":448,"path":1078,"order":78,"template":334,"translation_key":450},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fjson_get_string",{"title":452,"slug":453,"path":1080,"order":78,"template":334,"translation_key":455},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flevel_to_pulse",{"title":457,"slug":458,"path":1082,"order":78,"template":334,"translation_key":460},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flogic_and",{"title":462,"slug":463,"path":1084,"order":78,"template":334,"translation_key":465},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flogic_not",{"title":467,"slug":468,"path":1086,"order":78,"template":334,"translation_key":470},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Flogic_or",{"title":472,"slug":473,"path":1088,"order":78,"template":334,"translation_key":475},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_abs",{"title":477,"slug":478,"path":1090,"order":78,"template":334,"translation_key":480},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_add",{"title":482,"slug":483,"path":1092,"order":78,"template":334,"translation_key":485},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_average",{"title":487,"slug":488,"path":1094,"order":78,"template":334,"translation_key":490},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_ceil",{"title":492,"slug":493,"path":1096,"order":78,"template":334,"translation_key":495},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_divide",{"title":497,"slug":498,"path":1098,"order":78,"template":334,"translation_key":500},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_floor",{"title":502,"slug":503,"path":1100,"order":78,"template":334,"translation_key":505},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_max",{"title":507,"slug":508,"path":1102,"order":78,"template":334,"translation_key":510},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_min",{"title":512,"slug":513,"path":1104,"order":78,"template":334,"translation_key":515},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_modulo",{"title":517,"slug":518,"path":1106,"order":78,"template":334,"translation_key":520},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_multiply",{"title":522,"slug":523,"path":1108,"order":78,"template":334,"translation_key":525},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_random",{"title":527,"slug":528,"path":1110,"order":78,"template":334,"translation_key":530},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_round",{"title":532,"slug":533,"path":1112,"order":78,"template":334,"translation_key":535},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmath_subtract",{"title":537,"slug":538,"path":1114,"order":78,"template":334,"translation_key":540},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmotor_axis",{"title":542,"slug":543,"path":1116,"order":78,"template":334,"translation_key":545},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fmoving_average",{"title":547,"slug":548,"path":1118,"order":78,"template":334,"translation_key":550},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumber_to_string",{"title":552,"slug":553,"path":1120,"order":78,"template":334,"translation_key":555},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumeric_latch",{"title":557,"slug":558,"path":1122,"order":78,"template":334,"translation_key":560},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumeric_predicate",{"title":562,"slug":563,"path":1124,"order":78,"template":334,"translation_key":565},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fnumeric_throttle",{"title":567,"slug":568,"path":1126,"order":78,"template":334,"translation_key":570},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpubsub",{"title":572,"slug":573,"path":1128,"order":78,"template":334,"translation_key":575},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpulse_counter",{"title":577,"slug":578,"path":1130,"order":78,"template":334,"translation_key":580},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpulse_gate",{"title":582,"slug":583,"path":1132,"order":78,"template":334,"translation_key":585},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fpulse_throttle",{"title":587,"slug":588,"path":1134,"order":78,"template":334,"translation_key":590},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fsequencer",{"title":592,"slug":593,"path":1136,"order":78,"template":334,"translation_key":595},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fshading",{"title":597,"slug":598,"path":1138,"order":78,"template":334,"translation_key":600},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fstring_format",{"title":602,"slug":603,"path":1140,"order":78,"template":334,"translation_key":605},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fstring_latch",{"title":607,"slug":608,"path":1142,"order":78,"template":334,"translation_key":610},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Ftoggle",{"title":612,"slug":613,"path":1144,"order":78,"template":334,"translation_key":615},"en\u002Fdocs\u002Flogic-blocks\u002Fprocess\u002Fvariable_delayed_pulse",{"title":1146,"slug":618,"path":1147,"order":96,"children":1148},"Output","en\u002Fdocs\u002Flogic-blocks\u002Foutput",[1149,1151],{"title":622,"slug":623,"path":1150,"order":78,"template":334,"translation_key":625},"en\u002Fdocs\u002Flogic-blocks\u002Foutput\u002Foperation_mode_controller",{"title":627,"slug":628,"path":1152,"order":78,"template":334,"translation_key":630},"en\u002Fdocs\u002Flogic-blocks\u002Foutput\u002Frelay",{"title":1154,"slug":633,"path":1155,"order":118,"children":1156},"Volang Programming Language","en\u002Fdocs\u002Fvolang",[1157,1160],{"title":1158,"slug":638,"path":1159,"order":84},"The Volang Language","en\u002Fdocs\u002Fvolang\u002Flanguage",{"title":1161,"slug":642,"path":1162,"order":90,"template":644},"Standard Library","en\u002Fdocs\u002Fvolang\u002Fstdlib",{"title":1164,"slug":647,"path":1165,"order":649,"children":1166},"Software & Tools","en\u002Fdocs\u002Fsoftware",[1167,1170],{"title":1168,"slug":653,"path":1169,"order":84},"Voldeno Studio - Installation and Walkthrough","en\u002Fdocs\u002Fsoftware\u002Fstudio",{"title":1171,"slug":657,"path":1172,"order":90},"Voldeno Studio - Schedules","en\u002Fdocs\u002Fsoftware\u002Fschedules",{"title":1174,"slug":1175,"path":1176,"order":663,"children":1177},"How-to Guides & Recipes","how-to","en\u002Fdocs\u002Fhow-to",[1178,1182,1186,1190],{"title":1179,"slug":1180,"path":1181,"order":84},"What is a smart home and how does it work?","what-is-a-smart-home","en\u002Fdocs\u002Fhow-to\u002Fwhat-is-a-smart-home",{"title":1183,"slug":1184,"path":1185,"order":90},"How to choose a smart home system: a practical guide","how-to-choose-a-smart-home-system","en\u002Fdocs\u002Fhow-to\u002Fhow-to-choose-a-smart-home-system",{"title":1187,"slug":1188,"path":1189,"order":96},"How much does a smart home cost? Three Voldeno installation variants with modules and prices","how-much-does-a-smart-home-cost","en\u002Fdocs\u002Fhow-to\u002Fhow-much-does-a-smart-home-cost",{"title":1191,"slug":1192,"path":1193,"order":106},"7 most common smart home design mistakes","smart-home-design-mistakes","en\u002Fdocs\u002Fhow-to\u002Fsmart-home-design-mistakes",{"title":1195,"slug":1196,"path":1197,"order":685,"children":1198},"Troubleshooting & Diagnostics","troubleshooting","en\u002Fdocs\u002Ftroubleshooting",[1199],{"title":1200,"slug":689,"path":1201,"order":84},"Bus Communication Troubleshooting","en\u002Fdocs\u002Ftroubleshooting\u002Fbus-communication",{"title":1203,"slug":693,"path":1204,"order":695},"Frequently Asked Questions","en\u002Fdocs\u002Ffaq",{"pl":1206,"de":1219,"en":1232},{"bloki-logiczne":1207,"architektura-systemu":1208,"bloki-logiczne\u002Finput":1209,"bloki-logiczne\u002Foutput":1210,"bloki-logiczne\u002Fprocess":1211,"pierwsze-kroki":1212,"oprogramowanie":1213,"moduly":1214,"volang":1215,"poradniki":1216,"diagnostyka":1217,"okablowanie":1218},"bloki-logiczne\u002Fprzeglad","architektura-systemu\u002Fbezpieczenstwo","bloki-logiczne\u002Finput\u002Fbinary_input","bloki-logiczne\u002Foutput\u002Foperation_mode_controller","bloki-logiczne\u002Fprocess\u002Fbinary_limiter","pierwsze-kroki\u002Fpojecia","oprogramowanie\u002Fstudio","moduly\u002Fokablowanie-hub","volang\u002Fjezyk","poradniki\u002Fczym-jest-smart-home","diagnostyka\u002Fkomunikacja-magistrali","okablowanie\u002Ftopologia-magistrali",{"logikbausteine":1220,"logikbausteine\u002Foutput":1221,"ratgeber":1222,"verkabelung":1223,"fehlerbehebung":1224,"erste-schritte":1225,"logikbausteine\u002Fprocess":1226,"module":1227,"logikbausteine\u002Finput":1228,"volang":1229,"software":1230,"systemarchitektur":1231},"logikbausteine\u002Fuebersicht","logikbausteine\u002Foutput\u002Foperation_mode_controller","ratgeber\u002Fwas-ist-ein-smart-home","verkabelung\u002Fbus-topology","fehlerbehebung\u002Fbus-communication","erste-schritte\u002Fconcepts","logikbausteine\u002Fprocess\u002Fbinary_limiter","module\u002Fhub-wiring","logikbausteine\u002Finput\u002Fbinary_input","volang\u002Flanguage","software\u002Fstudio","systemarchitektur\u002Fsecurity",{"logic-blocks\u002Fprocess":1233,"wiring":1234,"logic-blocks\u002Foutput":1235,"volang":1229,"how-to":1236,"troubleshooting":1237,"modules":1238,"getting-started":1239,"software":1230,"logic-blocks\u002Finput":1240,"system-architecture":1241,"logic-blocks":1242},"logic-blocks\u002Fprocess\u002Fbinary_limiter","wiring\u002Fbus-topology","logic-blocks\u002Foutput\u002Foperation_mode_controller","how-to\u002Fwhat-is-a-smart-home","troubleshooting\u002Fbus-communication","modules\u002Fhub-wiring","getting-started\u002Fconcepts","logic-blocks\u002Finput\u002Fbinary_input","system-architecture\u002Fsecurity","logic-blocks\u002Foverview",{"enabled":64,"navigation":1244},{"pl":1245,"en":1282,"de":1308},[1246,1252,1258,1264,1270,1276],{"title":1247,"slug":1248,"path":1249,"order":78,"date":1250,"translation_key":1251},"Inteligentny dom to nie gadżet: policzalne oszczędności, bezpieczeństwo i wartość nieruchomości","inteligentny-dom-to-nie-gadzet","pl\u002Fblog\u002Finteligentny-dom-to-nie-gadzet","2026-07-03","2026_07_03_inteligentny_dom_to_nie_gadzet",{"title":1253,"slug":1254,"path":1255,"order":78,"date":1256,"translation_key":1257},"Przełączanie w zerze napięcia: jak moduły I\u002FO i RELAY wydłużają życie styków przekaźników","przelaczanie-w-zerze-napiecia-moduly-io-i-relay","pl\u002Fblog\u002Fprzelaczanie-w-zerze-napiecia-moduly-io-i-relay","2026-06-11","2026_06_11_przelaczanie_w_zerze_napiecia",{"title":1259,"slug":1260,"path":1261,"order":78,"date":1262,"translation_key":1263},"System Voldeno napędził demo fabryki Fischertechnik na Google Cloud Next '26","voldeno-at-google-cloud-next-26","pl\u002Fblog\u002Fvoldeno-at-google-cloud-next-26","2026-04-28","2026_04_28_voldeno_at_google_cloud_next_26",{"title":1265,"slug":1266,"path":1267,"order":78,"date":1268,"translation_key":1269},"Jesteśmy gotowi! Setki modułów Voldeno przygotowanych do wdrożenia w inteligentnych domach.","jestesmy-gotowi-setki-modulow-voldeno-przygotowanych-do-wdrozenia-w-inteligentnych-domach","pl\u002Fblog\u002Fjestesmy-gotowi-setki-modulow-voldeno-przygotowanych-do-wdrozenia-w-inteligentnych-domach","2025-08-17","2025_08_17_we_are_ready",{"title":1271,"slug":1272,"path":1273,"order":78,"date":1274,"translation_key":1275},"Nowy czujnik temperatury Voldeno 1-Wire - kompaktowy, niezawodny i stworzony do dużych instalacji","nowy-czujnik-temperatury-1-wire-voldeno-kompaktowy-niezawodny-i-zaprojektowany-do-instalacji-na-duza-skale","pl\u002Fblog\u002Fnowy-czujnik-temperatury-1-wire-voldeno-kompaktowy-niezawodny-i-zaprojektowany-do-instalacji-na-duza-skale","2025-04-25","2025_04_25_new_voldeno_1wire_temperature_sensor",{"title":1277,"slug":1278,"path":1279,"order":78,"date":1280,"translation_key":1281},"Odkryj przyszłość inteligentnych domów z Voldeno","odkryj-przyszlosc-inteligentnych-domow-z-voldeno","pl\u002Fblog\u002Fodkryj-przyszlosc-inteligentnych-domow-z-voldeno","2024-10-18","2024_10_18_future_of_smart_homes",[1283,1288,1293,1296,1300,1304],{"title":1284,"slug":1285,"path":1286,"order":78,"date":1250,"translation_key":1287},"A smart home is not a gadget: measurable savings, security and property value","smart-home-is-not-a-gadget","en\u002Fblog\u002Fsmart-home-is-not-a-gadget","2026_07_03_smart_home_is_not_a_gadget",{"title":1289,"slug":1290,"path":1291,"order":78,"date":1256,"translation_key":1292},"Zero-crossing switching: how the I\u002FO and RELAY modules extend relay contact life","zero-crossing-switching-io-and-relay-modules","en\u002Fblog\u002Fzero-crossing-switching-io-and-relay-modules","2026_06_11_zero_crossing_switching",{"title":1294,"slug":1260,"path":1295,"order":78,"date":1262,"translation_key":1263},"Voldeno powered the Fischertechnik factory demo at Google Cloud Next '26","en\u002Fblog\u002Fvoldeno-at-google-cloud-next-26",{"title":1297,"slug":1298,"path":1299,"order":78,"date":1268,"translation_key":1269},"We are ready! Hundreds of Voldeno modules prepared for smart home deployment.","we-are-ready","en\u002Fblog\u002Fwe-are-ready",{"title":1301,"slug":1302,"path":1303,"order":78,"date":1274,"translation_key":1275},"New Voldeno 1-Wire Temperature Sensor - Compact, Reliable, and Built for Large-Scale Installations","new-voldeno-1-wire-temperature-sensor-compact-reliable-and-built-for-large-scale-installations","en\u002Fblog\u002Fnew-voldeno-1-wire-temperature-sensor-compact-reliable-and-built-for-large-scale-installations",{"title":1305,"slug":1306,"path":1307,"order":78,"date":1280,"translation_key":1281},"Discover the Future of Smart Homes with Voldeno","future_of_smart_homes","en\u002Fblog\u002Ffuture_of_smart_homes",[1309,1314,1319,1324,1329,1334],{"title":1310,"slug":1311,"path":1312,"order":78,"date":1250,"translation_key":1313},"Ein Smart Home ist kein Gadget: messbare Einsparungen, Sicherheit und Immobilienwert","smart-home-ist-kein-gadget","de\u002Fblog\u002Fsmart-home-ist-kein-gadget","2026_07_03_smart_home_ist_kein_gadget",{"title":1315,"slug":1316,"path":1317,"order":78,"date":1256,"translation_key":1318},"Schalten im Nulldurchgang: Wie die Module I\u002FO und RELAY die Lebensdauer der Relaiskontakte verlängern","schalten-im-nulldurchgang-io-und-relay-module","de\u002Fblog\u002Fschalten-im-nulldurchgang-io-und-relay-module","2026_06_11_schalten_im_nulldurchgang",{"title":1320,"slug":1321,"path":1322,"order":78,"date":1262,"translation_key":1323},"Voldeno steuerte die Fischertechnik-Fabrikdemo auf der Google Cloud Next '26","fischertechnik-fabrikdemo-google-cloud-next-26","de\u002Fblog\u002Ffischertechnik-fabrikdemo-google-cloud-next-26","2026_04_28_voldeno_bei_google_cloud_next_26",{"title":1325,"slug":1326,"path":1327,"order":78,"date":1268,"translation_key":1328},"Wir sind bereit! Hunderte Voldeno-Module für den Einsatz im Smart Home vorbereitet.","wir-sind-bereit","de\u002Fblog\u002Fwir-sind-bereit","2025_08_17_wir_sind_bereit",{"title":1330,"slug":1331,"path":1332,"order":78,"date":1274,"translation_key":1333},"Neuer Voldeno 1-Wire Temperatursensor: kompakt, zuverlässig und für große Installationen gebaut","1-wire-temperatursensor-kompakt-zuverlaessig-fuer-grosse-installationen","de\u002Fblog\u002F1-wire-temperatursensor-kompakt-zuverlaessig-fuer-grosse-installationen","2025_04_25_neuer_voldeno_1wire_temperatursensor",{"title":1335,"slug":1336,"path":1337,"order":78,"date":1280,"translation_key":1338},"Entdecken Sie die Zukunft des Smart Home mit Voldeno","zukunft-des-smart-home","de\u002Fblog\u002Fzukunft-des-smart-home","2024_10_18_zukunft_smart_homes",{"map":1340,"xDefault":1341},{"pl":1341,"en":1342,"de":1343},"https:\u002F\u002Fvoldeno.com\u002Fpl\u002Fdocs\u002Fvolang\u002Fjezyk","https:\u002F\u002Fvoldeno.com\u002Fen\u002Fdocs\u002Fvolang\u002Flanguage","https:\u002F\u002Fvoldeno.com\u002Fde\u002Fdocs\u002Fvolang\u002Flanguage",{"slug":638,"title":637,"description":1345,"tags":1346,"content_html":1350,"headings":1351,"order":84,"extra":1477},"Vollständige Dokumentation zu Volang, der proprietären Programmiersprache von Voldeno für die Smart-Home-Automatisierung.",[633,1347,1348,1349],"programmierung","sprache","automatisierung","\u003Ch1 id=\"die-sprache-volang\">\u003Ca href=\"#die-sprache-volang\" class=\"anchor\">#\u003C\u002Fa> Die Sprache Volang\u003C\u002Fh1>\n\u003Cp>Willkommen bei der Dokumentation zu Volang, der proprietären Programmiersprache von Voldeno. Sie ist das zentrale Werkzeug, um die Logik über Bausteine hinweg in unserem Smart-Home-Ökosystem umzusetzen.\u003C\u002Fp>\n\u003Ch2 id=\"einfuhrung\">\u003Ca href=\"#einfuhrung\" class=\"anchor\">#\u003C\u002Fa> Einführung\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Volang\u003C\u002Fstrong> ist eine spezialisierte Programmiersprache, entwickelt von \u003Cstrong>Voldeno\u003C\u002Fstrong>, eigens dafür ausgelegt, die Logik von Bausteinen innerhalb unseres Smart-Home-Ökosystems umzusetzen. Sie überbrückt die Lücke zwischen Hardwarefähigkeiten und übergeordneter Automatisierung und erlaubt Entwicklern, fortgeschrittene Steuerungsszenarien effizient und sicher zu erstellen.\u003C\u002Fp>\n\u003Cp>Der Hauptzweck von Volang ist es, das Verhalten von \u003Cstrong>Bausteinen\u003C\u002Fstrong> zu definieren. Im Voldeno-System stellt ein Baustein eine autonome Funktionseinheit dar (z. B. eine Rollladensteuerung, ein Thermostat oder einen Energiezähler). Volang erlaubt Entwicklern zu definieren, wie diese Bausteine auf Eingangssignale reagieren, internen Zustand verarbeiten und Aktionen aufgrund von Ereignissen auslösen.\u003C\u002Fp>\n\u003Ch3 id=\"architektur-das-kompilierte-modell\">\u003Ca href=\"#architektur-das-kompilierte-modell\" class=\"anchor\">#\u003C\u002Fa> Architektur: das kompilierte Modell\u003C\u002Fh3>\n\u003Cp>Anders als einfache Skriptsprachen, die direkt aus dem Text interpretiert werden, nutzt Volang eine Architektur mit einer \u003Cstrong>virtuellen Maschine (VM)\u003C\u002Fstrong>. Der Ausführungsprozess besteht aus zwei klar getrennten Stufen:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Kompilierung:\u003C\u002Fstrong> Der vom Entwickler geschriebene Quellcode wird vom Volang-Compiler verarbeitet. Dieser Schritt prüft Syntax, Datentypen und logische Integrität und wandelt den Code in ein optimiertes Binärformat um, den sogenannten \u003Cstrong>Bytecode\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Ausführung:\u003C\u002Fstrong> Der entstandene Bytecode wird in die \u003Cstrong>virtuelle Maschine Volang (Volang VM)\u003C\u002Fstrong> geladen, eine dedizierte Laufzeitumgebung, die auf Voldeno-Steuerungen läuft. Die VM ist dafür zuständig, die Bytecode-Anweisungen zu interpretieren und sie sicher auf der physischen Hardware auszuführen.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3 id=\"warum-volang-vm\">\u003Ca href=\"#warum-volang-vm\" class=\"anchor\">#\u003C\u002Fa> Warum Volang VM?\u003C\u002Fh3>\n\u003Cp>Eine Architektur mit virtueller Maschine bietet erhebliche Vorteile für Smart-Home-Umgebungen, vereinheitlicht den Entwicklungsablauf und erweitert die Fähigkeiten der Hardware:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Sicherheit (Sandboxing):\u003C\u002Fstrong> Nutzercode läuft in einer isolierten Umgebung, getrennt vom Kernbetriebssystem. Ein Laufzeitfehler (z. B. eine Division durch null) stoppt nur das betreffende Skript innerhalb der VM, sodass die Gesamtstabilität der Steuerung unangetastet bleibt.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Leistung:\u003C\u002Fstrong> Das Ausführen kompakten Binär-Bytecodes ist deutlich schneller und ressourcenschonender als das Parsen von Textdateien zur Laufzeit, was für eingebettete Systeme und Mikrocontroller entscheidend ist.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Portabilität:\u003C\u002Fstrong> In Volang geschriebene Logik ist hardwareunabhängig. Sie kann auf jedem Gerät ausgeführt werden, das die Volang VM betreiben kann, unabhängig von der zugrunde liegenden Prozessorarchitektur.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Identische Simulation:\u003C\u002Fstrong> Da die Volang VM plattformübergreifend konsistent läuft, kann exakt dieselbe Bausteinlogik innerhalb von \u003Cstrong>Voldeno Studio\u003C\u002Fstrong> ausgeführt werden. So können Entwickler ihren Code in einer Desktop-Umgebung testen und debuggen, mit der Garantie, dass sich das Verhalten identisch zum tatsächlichen Produktivsystem verhält.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Verteilte Ausführung:\u003C\u002Fstrong> Die Effizienz der VM erlaubt es, sie nicht nur auf dem zentralen \u003Cstrong>Voldeno Hub\u003C\u002Fstrong>, sondern auch auf peripheren Erweiterungsmodulen laufen zu lassen. Das ermöglicht echte verteilte Logik, bei der komplexe Verarbeitung lokal auf dem Gerät (am Rand) stattfinden kann, statt auf einfache Ereignismeldungen beschränkt zu sein.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"lexikalische-konventionen\">\u003Ca href=\"#lexikalische-konventionen\" class=\"anchor\">#\u003C\u002Fa> Lexikalische Konventionen\u003C\u002Fh2>\u003Ch3 id=\"schlusselworter\">\u003Ca href=\"#schlusselworter\" class=\"anchor\">#\u003C\u002Fa> Schlüsselwörter\u003C\u002Fh3>\n\u003Cp>Die folgenden Wörter sind in Volang reserviert und können nicht als Variablen- oder Funktionsnamen verwendet werden. Sie bilden das strukturelle Fundament der Sprache.\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"text\">\n\u003Cpre>\u003Ccode class=\"language-text\">\u003Cspan style=\"color:#c0c5ce;\">and        break        else        \n\u003C\u002Fspan>\u003Cspan style=\"color:#c0c5ce;\">extern     false        fn           \n\u003C\u002Fspan>\u003Cspan style=\"color:#c0c5ce;\">if         or           shl\n\u003C\u002Fspan>\u003Cspan style=\"color:#c0c5ce;\">shr        return       true       \n\u003C\u002Fspan>\u003Cspan style=\"color:#c0c5ce;\">while      xor\n\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"literale\">\u003Ca href=\"#literale\" class=\"anchor\">#\u003C\u002Fa> Literale\u003C\u002Fh3>\n\u003Cp>In Volang ist ein \u003Cstrong>Literal\u003C\u002Fstrong> eine Notation, um einen festen Wert direkt im Quellcode darzustellen. Es sind die rohen Datenwerte, die Sie Variablen zuweisen oder an Funktionen übergeben. Volang unterstützt bestimmte Formate für boolesche, String-, Ganzzahl- und Gleitkomma-Literale.\u003C\u002Fp>\n\u003Ch4 id=\"boolesche-literale\">\u003Ca href=\"#boolesche-literale\" class=\"anchor\">#\u003C\u002Fa> Boolesche Literale\u003C\u002Fh4>\n\u003Cp>Werden verwendet, um logische Zustände darzustellen. Es gibt genau zwei boolesche Literale:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>\u003Ccode>true\u003C\u002Fcode>\u003C\u002Fstrong>: stellt einen positiven oder aktiven Zustand dar (Ein).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>\u003Ccode>false\u003C\u002Fcode>\u003C\u002Fstrong>: stellt einen negativen oder inaktiven Zustand dar (Aus).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"ganzzahl-literale\">\u003Ca href=\"#ganzzahl-literale\" class=\"anchor\">#\u003C\u002Fa> Ganzzahl-Literale\u003C\u002Fh4>\n\u003Cp>Ganzzahl-Literale stellen ganze Zahlen dar. Volang unterstützt zwei Notationen:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Dezimal (Basis 10):\u003C\u002Fstrong> Standard-Zahlendarstellung mit den Ziffern \u003Ccode>0-9\u003C\u002Fcode>. Negative Zahlen werden mit einem Minuszeichen \u003Ccode>-\u003C\u002Fcode> versehen.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Hexadezimal (Basis 16):\u003C\u002Fstrong> oft für Farbcodes, Bitmasken oder Hardwareadressen verwendet. Diese Literale müssen mit dem Präfix \u003Cstrong>\u003Ccode>0x\u003C\u002Fcode>\u003C\u002Fstrong> beginnen, gefolgt von Ziffern \u003Ccode>0-9\u003C\u002Fcode> und Buchstaben \u003Ccode>A-F\u003C\u002Fcode> (Groß-\u002FKleinschreibung ohne Bedeutung).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"gleitkomma-literale\">\u003Ca href=\"#gleitkomma-literale\" class=\"anchor\">#\u003C\u002Fa> Gleitkomma-Literale\u003C\u002Fh4>\n\u003Cp>Gleitkomma-Literale stellen Zahlen mit Nachkommateil dar.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Syntax:\u003C\u002Fstrong> Sie werden in Dezimalnotation mit einem Punkt \u003Ccode>.\u003C\u002Fcode> als Dezimaltrennzeichen geschrieben.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Anforderung:\u003C\u002Fstrong> Ein gültiges Gleitkomma-Literal erfordert typischerweise mindestens eine Ziffer vor oder nach dem Dezimalpunkt (z. B. \u003Ccode>0.5\u003C\u002Fcode>, \u003Ccode>10.0\u003C\u002Fcode>, \u003Ccode>23.34\u003C\u002Fcode>).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"text-literale-strings\">\u003Ca href=\"#text-literale-strings\" class=\"anchor\">#\u003C\u002Fa> Text-Literale (Strings)\u003C\u002Fh4>\n\u003Cp>Text-Literale stellen Zeichenfolgen dar und werden für Nachrichten, Bezeichner oder Beschriftungen verwendet.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Syntax:\u003C\u002Fstrong> Text muss in doppelte Anführungszeichen \u003Cstrong>\u003Ccode>&quot;\u003C\u002Fcode>\u003C\u002Fstrong> eingeschlossen werden.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Mehrzeilige Unterstützung:\u003C\u002Fstrong> Ein String-Literal in Volang kann sich über mehrere Zeilen erstrecken. Die Zeilenumbrüche innerhalb der Anführungszeichen bleiben erhalten, sodass sich Text für Anzeigetafeln oder Protokolle leicht formatieren lässt, ohne spezielle Escape-Codes wie \u003Ccode>\\n\u003C\u002Fcode> zu verwenden.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"rohe-strings\">\u003Ca href=\"#rohe-strings\" class=\"anchor\">#\u003C\u002Fa> Rohe Strings\u003C\u002Fh4>\n\u003Cp>Rohe Strings dienen dazu, Text genau so darzustellen, wie er geschrieben ist, und ignorieren Sonderzeichen oder Formatierungen, die der Compiler sonst interpretieren würde.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Syntax:\u003C\u002Fstrong> Rohe Strings müssen in dreifache doppelte Anführungszeichen \u003Ccode>&quot;&quot;&quot;\u003C\u002Fcode> eingeschlossen werden.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Verwendung:\u003C\u002Fstrong> Alles innerhalb der dreifachen Anführungszeichen wird als wörtlicher Text behandelt. Das ist besonders nützlich, um Codeblöcke, komplexe Regex-Muster oder vorformatierte Dokumentation zu speichern.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Erhaltung:\u003C\u002Fstrong> Wie bei standardmäßigen mehrzeiligen Strings bleiben alle Einrückungen und Zeilenumbrüche genau so erhalten, wie sie zwischen den \u003Ccode>&quot;&quot;&quot;\u003C\u002Fcode>-Begrenzern erscheinen.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Beispiele:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F --- Boolesche Literale ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">is_light_on\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"boolean\">true\u003C\u002Fspan>\n\u003Cspan class=\"variable\">is_door_locked\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"boolean\">false\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F --- Ganzzahl-Literale (dezimal) ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">counter\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">10\u003C\u002Fspan>\n\u003Cspan class=\"variable\">negative_offset\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"operator\">-\u003C\u002Fspan>\u003Cspan class=\"number\">5\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F --- Ganzzahl-Literale (hexadezimal) ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">status_mask\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0xFF\u003C\u002Fspan>       \u003Cspan class=\"comment\">\u002F\u002F Dezimal 255\u003C\u002Fspan>\n\u003Cspan class=\"variable\">color_red\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0xFF0000\u003C\u002Fspan>     \u003Cspan class=\"comment\">\u002F\u002F Farbcode\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F --- Gleitkomma-Literale ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">temperature\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">23.34\u003C\u002Fspan>\n\u003Cspan class=\"variable\">calibration_factor\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0.95\u003C\u002Fspan>\n\u003Cspan class=\"variable\">voltage\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">12.0\u003C\u002Fspan>           \u003Cspan class=\"comment\">\u002F\u002F .0 zeigt an, dass dies ein Float ist, keine Ganzzahl\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F --- String-Literale ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">device_name\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"string\">\"Thermostat Wohnzimmer\"\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Mehrzeiliger String (erhält die Formatierung)\u003C\u002Fspan>\n\u003Cspan class=\"variable\">notification_msg\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"string\">\"\u003C\u002Fspan>\n\u003Cspan class=\"variable\">Warnung\u003C\u002Fspan>: \u003Cspan class=\"variable\">Hohe\u003C\u002Fspan> \u003Cspan class=\"variable\">Temperatur\u003C\u002Fspan>\u003Cspan class=\"operator\">!\u003C\u002Fspan>\n\u003Cspan class=\"variable\">Aktion\u003C\u002Fspan>: \u003Cspan class=\"variable\">K\u003C\u002Fspan>ü\u003Cspan class=\"variable\">hlung\u003C\u002Fspan> \u003Cspan class=\"variable\">aktiviert\u003C\u002Fspan>\n\u003Cspan class=\"variable\">Zeit\u003C\u002Fspan>: \u003Cspan class=\"number\">12\u003C\u002Fspan>:\u003Cspan class=\"number\">00\u003C\u002Fspan>\n\u003Cspan class=\"string\">\"\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F --- Rohes String-Literal ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">configJson\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"string\">\"\"\"\n{\n    \"status\": \"success\",\n    \"directory\": \"C:\\users\\volang\\app\",\n    \"pattern\": \"\\b[A-Z0-9._%+-]+\",\n    \"description\": \"No need to escape backslashes or \"quotes\" here!\"\n}\n\"\"\"\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch2 id=\"werte-und-typen\">\u003Ca href=\"#werte-und-typen\" class=\"anchor\">#\u003C\u002Fa> Werte und Typen\u003C\u002Fh2>\n\u003Cp>Volang arbeitet mit einem \u003Cstrong>dynamischen Typsystem\u003C\u002Fstrong>, das einen flexiblen Umgang mit Daten bietet. In Volang fungieren Variablen als generische Container statt als streng typisierte Speicher. Folglich müssen keine Typen (wie \u003Ccode>int\u003C\u002Fcode> oder \u003Ccode>float\u003C\u002Fcode>) im Code explizit deklariert werden. Die Typinformation ist dem Wert selbst inhärent, nicht der Variablen, die ihn hält.\u003C\u002Fp>\n\u003Ch3 id=\"erstklassige-werte\">\u003Ca href=\"#erstklassige-werte\" class=\"anchor\">#\u003C\u002Fa> Erstklassige Werte\u003C\u002Fh3>\n\u003Cp>Alle Werte in Volang sind erstklassige Werte. Das bedeutet, dass jeder Wert, unabhängig von seinem Typ:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>in Variablen gespeichert werden kann,\u003C\u002Fli>\n\u003Cli>als Argument an Funktionen übergeben werden kann,\u003C\u002Fli>\n\u003Cli>als Ergebnis von Funktionen zurückgegeben werden kann.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3 id=\"typkonsistenz-strikte-typisierung\">\u003Ca href=\"#typkonsistenz-strikte-typisierung\" class=\"anchor\">#\u003C\u002Fa> Typkonsistenz (strikte Typisierung)\u003C\u002Fh3>\n\u003Cp>Volang verlangt zwar keine Typdeklarationen, erzwingt aber \u003Cstrong>Typstabilität\u003C\u002Fstrong>. Sobald einer Variablen ein Wert eines bestimmten Typs (z. B. einer Ganzzahl) zugewiesen wurde, ist sie an diesen Typ gebunden. Sie \u003Cstrong>können\u003C\u002Fstrong> derselben Variablen anschließend \u003Cstrong>keinen\u003C\u002Fstrong> Wert eines anderen Typs (z. B. eines Strings) zuweisen. Dieser Mechanismus verhindert häufige Laufzeitfehler und sorgt für vorhersagbares Verhalten der Steuerung.\u003C\u002Fp>\n\u003Ch3 id=\"wertkategorien\">\u003Ca href=\"#wertkategorien\" class=\"anchor\">#\u003C\u002Fa> Wertkategorien\u003C\u002Fh3>\n\u003Cp>Volang unterscheidet vier grundlegende Arten von Werten:\u003C\u002Fp>\n\u003Ch4 id=\"1-numerisch-ganzzahl-und-float\">\u003Ca href=\"#1-numerisch-ganzzahl-und-float\" class=\"anchor\">#\u003C\u002Fa> 1. Numerisch (Ganzzahl und Float)\u003C\u002Fh4>\n\u003Cp>Werden für mathematische Berechnungen, Sensorwerte und Zähler verwendet.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Ganzzahl:\u003C\u002Fstrong> ganze Zahlen ohne Nachkommateil (z. B. \u003Ccode>0\u003C\u002Fcode>, \u003Ccode>42\u003C\u002Fcode>, \u003Ccode>-15\u003C\u002Fcode>).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Float:\u003C\u002Fstrong> Gleitkommazahlen, die Nachkommateile darstellen (z. B. \u003Ccode>3.14\u003C\u002Fcode>, \u003Ccode>21.5\u003C\u002Fcode>, \u003Ccode>-0.001\u003C\u002Fcode>).\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"2-textuell-string\">\u003Ca href=\"#2-textuell-string\" class=\"anchor\">#\u003C\u002Fa> 2. Textuell (String)\u003C\u002Fh4>\n\u003Cp>Werden für Statusmeldungen, Protokolle, Namen und Textverarbeitung verwendet. Strings sind Zeichenfolgen, eingeschlossen in doppelte Anführungszeichen \u003Ccode>&quot;\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Mehrzeilige Unterstützung:\u003C\u002Fstrong> Volang unterstützt mehrzeilige Strings. Innerhalb der Anführungszeichen können Sie die Eingabetaste drücken, um einen Textblock über mehrere Zeilen zu erzeugen.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"3-logisch-boolean\">\u003Ca href=\"#3-logisch-boolean\" class=\"anchor\">#\u003C\u002Fa> 3. Logisch (Boolean)\u003C\u002Fh4>\n\u003Cp>Booleans stellen Wahrheitswerte dar und sind entscheidend für Entscheidungslogik (\u003Ccode>if\u003C\u002Fcode>, \u003Ccode>while\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Werte:\u003C\u002Fstrong> \u003Ccode>true\u003C\u002Fcode> oder \u003Ccode>false\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"4-undurchsichtig-opaque\">\u003Ca href=\"#4-undurchsichtig-opaque\" class=\"anchor\">#\u003C\u002Fa> 4. Undurchsichtig (Opaque)\u003C\u002Fh4>\n\u003Cp>Undurchsichtige Werte stellen komplexe Datenstrukturen dar, deren interne Umsetzung von der Volang VM verwaltet wird. Der Nutzer interagiert mit ihnen über dedizierte Funktionen der Standardbibliothek statt über direkte Syntaxoperatoren. Beispiele für undurchsichtige Typen sind:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Array:\u003C\u002Fstrong> eine geordnete, indizierte Sammlung von Werten.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Map:\u003C\u002Fstrong> eine Sammlung von Schlüssel-Wert-Paaren, bei der jeder Schlüssel eindeutig ist.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Dies sind nur einige der verfügbaren undurchsichtigen Typen, die Standardbibliothek kann weitere bereitstellen. Undurchsichtige Werte folgen denselben erstklassigen Regeln wie andere Typen: Sie können in Variablen gespeichert, als Argumente übergeben und aus Funktionen zurückgegeben werden. Sie können jedoch nicht mit den üblichen arithmetischen oder logischen Operatoren verwendet werden.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Beispiel:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F 1. Dynamische Typisierung\u003C\u002Fspan>\n\u003Cspan class=\"variable\">status\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">25.5\u003C\u002Fspan>    \n\n\u003Cspan class=\"comment\">\u002F\u002F 2. Mehrzeilige Strings\u003C\u002Fspan>\n\u003Cspan class=\"variable\">config_info\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"string\">\"Gerät: Thermostat\u003C\u002Fspan>\n    \u003Cspan class=\"variable\">Standort\u003C\u002Fspan>: \u003Cspan class=\"variable\">Wohnzimmer\u003C\u002Fspan>\n    \u003Cspan class=\"variable\">Firmware\u003C\u002Fspan>: \u003Cspan class=\"variable\">v1\u003C\u002Fspan>.\u003Cspan class=\"number\">2\u003C\u002Fspan>\u003Cspan class=\"string\">\"\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F 3. Werte übergeben\u003C\u002Fspan>\n\u003Cspan class=\"keyword\">fn\u003C\u002Fspan> \u003Cspan class=\"function\">logStatus\u003C\u002Fspan>(\u003Cspan class=\"variable\">message\u003C\u002Fspan>) {\n    \u003Cspan class=\"function\">print\u003C\u002Fspan>(\u003Cspan class=\"variable\">message\u003C\u002Fspan>)\n}\n\n\u003Cspan class=\"function\">logStatus\u003C\u002Fspan>(\u003Cspan class=\"variable\">config_info\u003C\u002Fspan>)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch2 id=\"variablen\">\u003Ca href=\"#variablen\" class=\"anchor\">#\u003C\u002Fa> Variablen\u003C\u002Fh2>\n\u003Cp>Volang verfolgt einen schlanken Ansatz bei der Verwaltung von Variablen. Es gibt keine Deklarationsschlüsselwörter (wie \u003Ccode>var\u003C\u002Fcode>, \u003Ccode>let\u003C\u002Fcode> oder \u003Ccode>int\u003C\u002Fcode>). Eine Variable entsteht in dem Moment, in dem Sie einem Namen einen Wert zuweisen. Der Ort, an dem Sie die Variable definieren, bestimmt ihren Gültigkeitsbereich (Sichtbarkeit) im gesamten Skript.\u003C\u002Fp>\n\u003Ch3 id=\"variablen-erstellen\">\u003Ca href=\"#variablen-erstellen\" class=\"anchor\">#\u003C\u002Fa> Variablen erstellen\u003C\u002Fh3>\n\u003Cp>Um eine Variable zu definieren, verwenden Sie einfach den Zuweisungsoperator \u003Cstrong>\u003Ccode>=\u003C\u002Fcode>\u003C\u002Fstrong>. Der Datentyp der Variablen wird aus dem zugewiesenen Wert abgeleitet und bleibt für die gesamte Lebensdauer dieser Variablen fest.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Syntax:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"variable\">variable_name\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">value\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"gultigkeitsbereich-von-variablen\">\u003Ca href=\"#gultigkeitsbereich-von-variablen\" class=\"anchor\">#\u003C\u002Fa> Gültigkeitsbereich von Variablen\u003C\u002Fh3>\n\u003Cp>Der Gültigkeitsbereich definiert, wo eine Variable in Ihrem Code zugänglich ist. Volang unterscheidet zwei Arten von Gültigkeitsbereichen:\u003C\u002Fp>\n\u003Ch4 id=\"globale-variablen\">\u003Ca href=\"#globale-variablen\" class=\"anchor\">#\u003C\u002Fa> Globale Variablen\u003C\u002Fh4>\n\u003Cp>Variablen, die auf der obersten Ebene des Skripts definiert werden (außerhalb jeder Funktion oder jedes Steuerblocks), sind \u003Cstrong>global\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Sichtbarkeit:\u003C\u002Fstrong> Sie sind von überall im Skript zugänglich, aber \u003Cstrong>nicht innerhalb von Funktionen\u003C\u002Fstrong>. Um einen globalen Wert innerhalb einer Funktion zu nutzen, übergeben Sie ihn als Argument.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Anwendungsfall:\u003C\u002Fstrong> Ideal, um den Gesamtzustand des Geräts zu speichern, etwa \u003Ccode>target_temperature\u003C\u002Fcode>, \u003Ccode>system_mode\u003C\u002Fcode> oder \u003Ccode>alarm_status\u003C\u002Fcode>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4 id=\"lokale-variablen\">\u003Ca href=\"#lokale-variablen\" class=\"anchor\">#\u003C\u002Fa> Lokale Variablen\u003C\u002Fh4>\n\u003Cp>Variablen, die innerhalb einer Funktion (\u003Ccode>fn\u003C\u002Fcode>) oder eines Steuerblocks definiert werden, sind \u003Cstrong>lokal\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Sichtbarkeit:\u003C\u002Fstrong> Sie existieren nur innerhalb des Blocks, in dem sie erstellt wurden. Sie werden zerstört, sobald die Ausführung diesen Block verlässt.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Anwendungsfall:\u003C\u002Fstrong> für temporäre Berechnungen, Schleifenzähler oder Zwischenschritte der Logik.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Beispiel:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F --- Globale Variablen ---\u003C\u002Fspan>\n\u003Cspan class=\"variable\">system_status\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"string\">\"IDLE\"\u003C\u002Fspan>\n\u003Cspan class=\"variable\">setpoint\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">21.5\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Globale Variablen sind NICHT innerhalb von Funktionen zugänglich.\u003C\u002Fspan>\n\u003Cspan class=\"comment\">\u002F\u002F Übergeben Sie sie stattdessen als Argumente:\u003C\u002Fspan>\n\u003Cspan class=\"keyword\">fn\u003C\u002Fspan> \u003Cspan class=\"function\">checkTemperature\u003C\u002Fspan>(\u003Cspan class=\"variable\">current_temp\u003C\u002Fspan>, \u003Cspan class=\"variable\">target\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F --- Lokale Variable ---\u003C\u002Fspan>\n    \u003Cspan class=\"comment\">\u002F\u002F 'diff' existiert nur innerhalb dieser Funktion\u003C\u002Fspan>\n    \u003Cspan class=\"variable\">diff\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">current_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">-\u003C\u002Fspan> \u003Cspan class=\"variable\">target\u003C\u002Fspan>\n    \n    \u003Cspan class=\"keyword\">if\u003C\u002Fspan> \u003Cspan class=\"variable\">diff\u003C\u002Fspan> \u003Cspan class=\"operator\">&gt;\u003C\u002Fspan> \u003Cspan class=\"number\">1.0\u003C\u002Fspan> {\n        \u003Cspan class=\"keyword\">return\u003C\u002Fspan> \u003Cspan class=\"string\">\"Kühlung erforderlich\"\u003C\u002Fspan>\n    }\n    \n    \u003Cspan class=\"keyword\">return\u003C\u002Fspan> \u003Cspan class=\"string\">\"Stabil\"\u003C\u002Fspan>\n}\n\n\u003Cspan class=\"comment\">\u002F\u002F Den globalen 'setpoint' als Argument übergeben\u003C\u002Fspan>\n\u003Cspan class=\"variable\">result\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"function\">checkTemperature\u003C\u002Fspan>(\u003Cspan class=\"number\">22.8\u003C\u002Fspan>, \u003Cspan class=\"variable\">setpoint\u003C\u002Fspan>)\n\n\u003Cspan class=\"comment\">\u002F\u002F 'diff' ist hier nicht zugänglich\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch2 id=\"kommentare\">\u003Ca href=\"#kommentare\" class=\"anchor\">#\u003C\u002Fa> Kommentare\u003C\u002Fh2>\n\u003Cp>Kommentare sind Codefragmente, die vom Volang-Compiler ignoriert werden. Sie dienen dazu, die Logik zu erklären, Notizen für andere Entwickler zu hinterlassen oder bestimmte Codeteile während des Tests vorübergehend zu deaktivieren.\u003C\u002Fp>\n\u003Ch3 id=\"einzeilige-kommentare\">\u003Ca href=\"#einzeilige-kommentare\" class=\"anchor\">#\u003C\u002Fa> Einzeilige Kommentare\u003C\u002Fh3>\n\u003Cp>Einzeilige Kommentare beginnen mit zwei Schrägstrichen \u003Ccode>\u002F\u002F\u003C\u002Fcode>. Jeder Text nach diesen Zeichen bis zum Zeilenende wird als Kommentar behandelt.\u003C\u002Fp>\n\u003Ch3 id=\"mehrzeilige-kommentare\">\u003Ca href=\"#mehrzeilige-kommentare\" class=\"anchor\">#\u003C\u002Fa> Mehrzeilige Kommentare\u003C\u002Fh3>\n\u003Cp>Mehrzeilige (Block-)Kommentare beginnen mit \u003Ccode>\u002F*\u003C\u002Fcode> und enden mit \u003Ccode>*\u002F\u003C\u002Fcode>. Alles zwischen diesen Markierungen wird ignoriert, unabhängig davon, über wie viele Zeilen es sich erstreckt.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Beispiel:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F Dies ist ein einzeiliger Kommentar\u003C\u002Fspan>\n\u003Cspan class=\"variable\">targetTemp\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">21.5\u003C\u002Fspan> \u003Cspan class=\"comment\">\u002F\u002F Kommentar am Ende einer Zeile\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F*\n   Dies ist ein mehrzeiliger Kommentar.\n   Er eignet sich, um komplexe Logik\n   oder Blockköpfe zu beschreiben.\n*\u002F\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F* oldLogic = 10\nif (oldLogic &gt; 5) {\n   \u002F\u002F Dieser Code ist deaktiviert\n}\n*\u002F\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch2 id=\"anweisungen\">\u003Ca href=\"#anweisungen\" class=\"anchor\">#\u003C\u002Fa> Anweisungen\u003C\u002Fh2>\n\u003Cp>Volang ist darauf ausgelegt, visuelles Rauschen zu minimieren und die Lesbarkeit zu maximieren. Anders als Sprachen wie C++ oder Java verwendet Volang \u003Cstrong>keine Semikolons (\u003Ccode>;\u003C\u002Fcode>)\u003C\u002Fstrong>, um das Ende einer Anweisung zu kennzeichnen.\u003C\u002Fp>\n\u003Cp>Das \u003Cstrong>Zeilenumbruchzeichen\u003C\u002Fstrong> (Drücken der Eingabetaste) dient als endgültiges Ende einer Anweisung. Der Compiler interpretiert das Zeilenende als Abschluss des aktuellen Befehls.\u003C\u002Fp>\n\u003Ch3 id=\"zuweisungen\">\u003Ca href=\"#zuweisungen\" class=\"anchor\">#\u003C\u002Fa> Zuweisungen\u003C\u002Fh3>\n\u003Cp>Zuweisungsoperatoren dienen dazu, einen Wert in einer Variablen zu speichern. Volang unterstützt den einfachen Standard-Zuweisungsoperator sowie zusammengesetzte Zuweisungsoperatoren.\u003C\u002Fp>\n\u003Ch4 id=\"einfache-zuweisung\">\u003Ca href=\"#einfache-zuweisung\" class=\"anchor\">#\u003C\u002Fa> Einfache Zuweisung\u003C\u002Fh4>\n\u003Cp>Der Operator \u003Ccode>=\u003C\u002Fcode> weist den Wert auf der rechten Seite der Variablen auf der linken Seite zu.\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"variable\">target_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">21.0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">event_counter\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch4 id=\"zusammengesetzte-zuweisungsoperatoren\">\u003Ca href=\"#zusammengesetzte-zuweisungsoperatoren\" class=\"anchor\">#\u003C\u002Fa> Zusammengesetzte Zuweisungsoperatoren\u003C\u002Fh4>\n\u003Cp>Zusammengesetzte Operatoren führen eine Operation auf dem aktuellen Wert der Variablen aus und aktualisieren sie anschließend mit dem neuen Ergebnis.\u003C\u002Fp>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Operator\u003C\u002Fth>\u003Cth>Beschreibung\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>+=\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Addieren und zuweisen\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>-=\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Subtrahieren und zuweisen\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>*=\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Multiplizieren und zuweisen\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>\u002F=\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Dividieren und zuweisen\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Wesentliche Verhaltensweisen:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Initialisierungsanforderung:\u003C\u002Fstrong> Bei zusammengesetzten Operatoren muss die Variable auf der linken Seite \u003Cstrong>bereits existieren\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Typheraufstufung:\u003C\u002Fstrong> Die zusammengesetzte Zuweisung folgt denselben Regeln zur Typheraufstufung wie die normale Arithmetik.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>Beispiele:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F Zähler erhöhen\u003C\u002Fspan>\n\u003Cspan class=\"variable\">event_counter\u003C\u002Fspan> \u003Cspan class=\"operator\">+=\u003C\u002Fspan> \u003Cspan class=\"number\">1\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Sollwert verringern\u003C\u002Fspan>\n\u003Cspan class=\"variable\">target_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">-=\u003C\u002Fspan> \u003Cspan class=\"number\">0.5\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Helligkeit auf 80 % skalieren\u003C\u002Fspan>\n\u003Cspan class=\"variable\">brightness\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">100\u003C\u002Fspan>\n\u003Cspan class=\"variable\">brightness\u003C\u002Fspan> \u003Cspan class=\"operator\">*=\u003C\u002Fspan> \u003Cspan class=\"number\">0.8\u003C\u002Fspan>  \u003Cspan class=\"comment\">\u002F\u002F Ergebnis: 80.0\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Energie akkumulieren\u003C\u002Fspan>\n\u003Cspan class=\"variable\">total_energy_kwh\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0.0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">current_usage\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">1.5\u003C\u002Fspan>\n\u003Cspan class=\"variable\">total_energy_kwh\u003C\u002Fspan> \u003Cspan class=\"operator\">+=\u003C\u002Fspan> \u003Cspan class=\"variable\">current_usage\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"ablaufsteuerung\">\u003Ca href=\"#ablaufsteuerung\" class=\"anchor\">#\u003C\u002Fa> Ablaufsteuerung\u003C\u002Fh3>\n\u003Cp>Die \u003Ccode>if\u003C\u002Fcode>-Anweisung ist die grundlegende Entscheidungsstruktur in Volang. Der Bedingungsausdruck \u003Cstrong>muss zu einem booleschen Wert\u003C\u002Fstrong> (\u003Ccode>true\u003C\u002Fcode> oder \u003Ccode>false\u003C\u002Fcode>) ausgewertet werden. Nicht-boolesche Werte (wie Ganzzahlen, Floats oder Strings) werden nicht implizit umgewandelt, ihre Verwendung als Bedingung führt zu einem Kompilierungsfehler.\u003C\u002Fp>\n\u003Ch4 id=\"einfaches-if\">\u003Ca href=\"#einfaches-if\" class=\"anchor\">#\u003C\u002Fa> Einfaches \u003Ccode>if\u003C\u002Fcode>\u003C\u002Fh4>\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">condition\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Code, der bei wahrer Bedingung ausgeführt wird\u003C\u002Fspan>\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch4 id=\"if-mit-else\">\u003Ca href=\"#if-mit-else\" class=\"anchor\">#\u003C\u002Fa> \u003Ccode>if\u003C\u002Fcode> mit \u003Ccode>else\u003C\u002Fcode>\u003C\u002Fh4>\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">condition\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Code, der bei wahrer Bedingung ausgeführt wird\u003C\u002Fspan>\n} \u003Cspan class=\"keyword\">else\u003C\u002Fspan> {\n    \u003Cspan class=\"comment\">\u002F\u002F Code, der bei falscher Bedingung ausgeführt wird\u003C\u002Fspan>\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch4 id=\"verkettete-bedingungen-else-if\">\u003Ca href=\"#verkettete-bedingungen-else-if\" class=\"anchor\">#\u003C\u002Fa> Verkettete Bedingungen (\u003Ccode>else if\u003C\u002Fcode>)\u003C\u002Fh4>\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">condition_1\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Läuft, wenn condition_1 wahr ist\u003C\u002Fspan>\n} \u003Cspan class=\"keyword\">else\u003C\u002Fspan> \u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">condition_2\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Läuft, wenn condition_1 falsch UND condition_2 wahr ist\u003C\u002Fspan>\n} \u003Cspan class=\"keyword\">else\u003C\u002Fspan> {\n    \u003Cspan class=\"comment\">\u002F\u002F Läuft, wenn alle obigen Bedingungen falsch sind\u003C\u002Fspan>\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\n\u003Cp>\u003Cstrong>Beispiel - Thermostatlogik:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"variable\">current_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">19.0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">target_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">21.0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">hysteresis\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0.5\u003C\u002Fspan>\n\n\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">current_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">&lt;\u003C\u002Fspan> (\u003Cspan class=\"variable\">target_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">-\u003C\u002Fspan> \u003Cspan class=\"variable\">hysteresis\u003C\u002Fspan>)) {\n    \u003Cspan class=\"comment\">\u002F\u002F Zu kalt -&gt; Heizen starten\u003C\u002Fspan>\n    \u003Cspan class=\"function\">setHeating\u003C\u002Fspan>(\u003Cspan class=\"boolean\">true\u003C\u002Fspan>)\n    \n} \u003Cspan class=\"keyword\">else\u003C\u002Fspan> \u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">current_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">&gt;\u003C\u002Fspan> (\u003Cspan class=\"variable\">target_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">hysteresis\u003C\u002Fspan>)) {\n    \u003Cspan class=\"comment\">\u002F\u002F Zu warm -&gt; Kühlen starten\u003C\u002Fspan>\n    \u003Cspan class=\"function\">setCooling\u003C\u002Fspan>(\u003Cspan class=\"boolean\">true\u003C\u002Fspan>)\n    \n} \u003Cspan class=\"keyword\">else\u003C\u002Fspan> {\n    \u003Cspan class=\"comment\">\u002F\u002F Temperatur liegt im optimalen Bereich\u003C\u002Fspan>\n    \u003Cspan class=\"function\">setHeating\u003C\u002Fspan>(\u003Cspan class=\"boolean\">false\u003C\u002Fspan>)\n    \u003Cspan class=\"function\">setCooling\u003C\u002Fspan>(\u003Cspan class=\"boolean\">false\u003C\u002Fspan>)\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"schleifen\">\u003Ca href=\"#schleifen\" class=\"anchor\">#\u003C\u002Fa> Schleifen\u003C\u002Fh3>\n\u003Cp>Volang unterstützt eine einzige Schleifenkonstruktion: die \u003Ccode>while\u003C\u002Fcode>-Schleife. Es gibt keine \u003Ccode>for\u003C\u002Fcode>- oder \u003Ccode>do-while\u003C\u002Fcode>-Schleifen in der Sprache. Wie bei \u003Ccode>if\u003C\u002Fcode> \u003Cstrong>muss\u003C\u002Fstrong> der Bedingungsausdruck \u003Cstrong>zu einem booleschen Wert\u003C\u002Fstrong> (\u003Ccode>true\u003C\u002Fcode> oder \u003Ccode>false\u003C\u002Fcode>) ausgewertet werden.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Syntax:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">while\u003C\u002Fspan> (\u003Cspan class=\"variable\">condition\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Code, der wiederholt ausgeführt wird\u003C\u002Fspan>\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\n\u003Cp>Volang unterstützt das Schlüsselwort \u003Ccode>break\u003C\u002Fcode> innerhalb von Schleifen. Trifft die Ausführung auf \u003Ccode>break\u003C\u002Fcode>, wird die Schleife sofort beendet.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>Hinweis:\u003C\u002Fstrong> In eingebetteten Systemen und Smart-Home-Steuerungen sind Endlosschleifen gefährlich. Eine \u003Ccode>while\u003C\u002Fcode>-Schleife, deren Bedingung nie \u003Ccode>false\u003C\u002Fcode> wird und in der \u003Ccode>break\u003C\u002Fcode> nie erreicht wird, blockiert die Skriptausführung, und der Baustein reagiert nicht mehr auf weitere Ereignisse. Es liegt in der Verantwortung des Skriptautors, sicherzustellen, dass die Schleife endet.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Cstrong>Beispiele:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F Einfacher Zähler\u003C\u002Fspan>\n\u003Cspan class=\"variable\">counter\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">5\u003C\u002Fspan>\n\n\u003Cspan class=\"keyword\">while\u003C\u002Fspan> (\u003Cspan class=\"variable\">counter\u003C\u002Fspan> \u003Cspan class=\"operator\">&gt;\u003C\u002Fspan> \u003Cspan class=\"number\">0\u003C\u002Fspan>) {\n    \u003Cspan class=\"function\">logValue\u003C\u002Fspan>(\u003Cspan class=\"variable\">counter\u003C\u002Fspan>)\n    \u003Cspan class=\"variable\">counter\u003C\u002Fspan> \u003Cspan class=\"operator\">-=\u003C\u002Fspan> \u003Cspan class=\"number\">1\u003C\u002Fspan>\n}\n\n\u003Cspan class=\"comment\">\u002F\u002F Warten mit Timeout (mit break)\u003C\u002Fspan>\n\u003Cspan class=\"variable\">attempts\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">max_retries\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">10\u003C\u002Fspan>\n\u003Cspan class=\"variable\">success\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"boolean\">false\u003C\u002Fspan>\n\n\u003Cspan class=\"keyword\">while\u003C\u002Fspan> (\u003Cspan class=\"variable\">attempts\u003C\u002Fspan> \u003Cspan class=\"operator\">&lt;\u003C\u002Fspan> \u003Cspan class=\"variable\">max_retries\u003C\u002Fspan>) {\n    \u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"function\">checkConnection\u003C\u002Fspan>()) {\n        \u003Cspan class=\"variable\">success\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"boolean\">true\u003C\u002Fspan>\n        \u003Cspan class=\"keyword\">break\u003C\u002Fspan>\n    }\n    \u003Cspan class=\"variable\">attempts\u003C\u002Fspan> \u003Cspan class=\"operator\">+=\u003C\u002Fspan> \u003Cspan class=\"number\">1\u003C\u002Fspan>\n}\n\n\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">success\u003C\u002Fspan>) {\n    \u003Cspan class=\"function\">startProcess\u003C\u002Fspan>()\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"funktionen\">\u003Ca href=\"#funktionen\" class=\"anchor\">#\u003C\u002Fa> Funktionen\u003C\u002Fh3>\n\u003Cp>Funktionen sind wiederverwendbare Codeblöcke, die eine bestimmte Aufgabe erfüllen. In Volang werden Funktionen mit dem Schlüsselwort \u003Ccode>fn\u003C\u002Fcode> definiert.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Syntax:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">fn\u003C\u002Fspan> \u003Cspan class=\"function\">functionName\u003C\u002Fspan>(\u003Cspan class=\"variable\">argument1\u003C\u002Fspan>, \u003Cspan class=\"variable\">argument2\u003C\u002Fspan>) {\n    \u003Cspan class=\"comment\">\u002F\u002F Auszuführender Code\u003C\u002Fspan>\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\n\u003Cp>\u003Cstrong>Wesentliche Regeln:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Argumente:\u003C\u002Fstrong> Eine Funktion kann mehrere Argumente (durch Kommas getrennt) oder gar keine annehmen.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Rückgabewerte:\u003C\u002Fstrong> Verwenden Sie \u003Ccode>return\u003C\u002Fcode>, um einen Wert zurückzugeben. Fehlt es, gibt die Funktion nichts zurück (void).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Namensbeschränkungen:\u003C\u002Fstrong> Funktionsnamen müssen sich von den Namen der Funktionen der Standardbibliothek unterscheiden.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Gültigkeitsbereich:\u003C\u002Fstrong> Variablen, die innerhalb einer Funktion definiert werden, sind lokal zu dieser Funktion.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Kein globaler Zugriff:\u003C\u002Fstrong> Globale Variablen sind innerhalb von Funktionen \u003Cstrong>nicht zugänglich\u003C\u002Fstrong>. Alle externen Daten, die die Funktion benötigt, müssen als Argument übergeben werden.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>Beispiel:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"keyword\">fn\u003C\u002Fspan> \u003Cspan class=\"function\">calculateAverage\u003C\u002Fspan>(\u003Cspan class=\"variable\">a\u003C\u002Fspan>, \u003Cspan class=\"variable\">b\u003C\u002Fspan>, \u003Cspan class=\"variable\">c\u003C\u002Fspan>) {\n    \u003Cspan class=\"variable\">total\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">a\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">b\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">c\u003C\u002Fspan>\n    \u003Cspan class=\"keyword\">return\u003C\u002Fspan> \u003Cspan class=\"variable\">total\u003C\u002Fspan> \u003Cspan class=\"operator\">\u002F\u003C\u002Fspan> \u003Cspan class=\"number\">3\u003C\u002Fspan>\n}\n\n\u003Cspan class=\"variable\">avg\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"function\">calculateAverage\u003C\u002Fspan>(\u003Cspan class=\"number\">20.5\u003C\u002Fspan>, \u003Cspan class=\"number\">21.0\u003C\u002Fspan>, \u003Cspan class=\"number\">19.5\u003C\u002Fspan>)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch2 id=\"ausdrucke\">\u003Ca href=\"#ausdrucke\" class=\"anchor\">#\u003C\u002Fa> Ausdrücke\u003C\u002Fh2>\u003Ch3 id=\"binare-arithmetische-operatoren\">\u003Ca href=\"#binare-arithmetische-operatoren\" class=\"anchor\">#\u003C\u002Fa> Binäre arithmetische Operatoren\u003C\u002Fh3>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Operator\u003C\u002Fth>\u003Cth>Beschreibung\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>+\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Addition\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>-\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Subtraktion\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>*\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Multiplikation\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>\u002F\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Division\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>%\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Modulo\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Rangfolge:\u003C\u002Fstrong> Multiplikation, Division und Modulo werden vor Addition und Subtraktion ausgewertet.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Beispiele:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F Sensorkalibrierung\u003C\u002Fspan>\n\u003Cspan class=\"variable\">raw_value\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">50\u003C\u002Fspan>\n\u003Cspan class=\"variable\">scale_factor\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">1.2\u003C\u002Fspan>\n\u003Cspan class=\"variable\">offset\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">5.0\u003C\u002Fspan>\n\u003Cspan class=\"variable\">calibrated_value\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">raw_value\u003C\u002Fspan> \u003Cspan class=\"operator\">*\u003C\u002Fspan> \u003Cspan class=\"variable\">scale_factor\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">offset\u003C\u002Fspan>  \u003Cspan class=\"comment\">\u002F\u002F 65.0\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Mittelwert mit Klammern\u003C\u002Fspan>\n\u003Cspan class=\"variable\">average_temp\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> (\u003Cspan class=\"variable\">temp_1\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">temp_2\u003C\u002Fspan> \u003Cspan class=\"operator\">+\u003C\u002Fspan> \u003Cspan class=\"variable\">temp_3\u003C\u002Fspan>) \u003Cspan class=\"operator\">\u002F\u003C\u002Fspan> \u003Cspan class=\"number\">3\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Modulo für zyklische Ereignisse\u003C\u002Fspan>\n\u003Cspan class=\"variable\">remainder\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">loop_counter\u003C\u002Fspan> \u003Cspan class=\"operator\">%\u003C\u002Fspan> \u003Cspan class=\"number\">10\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"binare-logische-operatoren\">\u003Ca href=\"#binare-logische-operatoren\" class=\"anchor\">#\u003C\u002Fa> Binäre logische Operatoren\u003C\u002Fh3>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Operator\u003C\u002Fth>\u003Cth>Beschreibung\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>and\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Logisches UND, gibt nur \u003Ccode>true\u003C\u002Fcode> zurück, wenn beide Operanden \u003Ccode>true\u003C\u002Fcode> sind\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>or\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Logisches ODER, gibt \u003Ccode>true\u003C\u002Fcode> zurück, wenn mindestens ein Operand \u003Ccode>true\u003C\u002Fcode> ist. Beide Operanden werden stets ausgewertet (keine Kurzschlussauswertung).\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Beispiele:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"comment\">\u002F\u002F Bedingte Beleuchtung (UND)\u003C\u002Fspan>\n\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">motion_active\u003C\u002Fspan> \u003Cspan class=\"keyword\">and\u003C\u002Fspan> \u003Cspan class=\"variable\">brightness_level\u003C\u002Fspan> \u003Cspan class=\"operator\">&lt;\u003C\u002Fspan> \u003Cspan class=\"variable\">threshold\u003C\u002Fspan>) {\n    \u003Cspan class=\"function\">setLight\u003C\u002Fspan>(\u003Cspan class=\"boolean\">true\u003C\u002Fspan>)\n}\n\n\u003Cspan class=\"comment\">\u002F\u002F Redundantes Auslösen (ODER)\u003C\u002Fspan>\n\u003Cspan class=\"keyword\">if\u003C\u002Fspan> (\u003Cspan class=\"variable\">door_open\u003C\u002Fspan> \u003Cspan class=\"keyword\">or\u003C\u002Fspan> \u003Cspan class=\"variable\">window_vibration\u003C\u002Fspan>) {\n    \u003Cspan class=\"function\">triggerAlarm\u003C\u002Fspan>()\n}\n\n\u003Cspan class=\"comment\">\u002F\u002F Komplexe Logik (Gruppierung)\u003C\u002Fspan>\n\u003Cspan class=\"variable\">heating_on\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">manual_override\u003C\u002Fspan> \u003Cspan class=\"keyword\">or\u003C\u002Fspan> (\u003Cspan class=\"variable\">is_weekend\u003C\u002Fspan> \u003Cspan class=\"keyword\">and\u003C\u002Fspan> \u003Cspan class=\"variable\">user_home\u003C\u002Fspan>)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>\u003Ch3 id=\"binare-bitoperationen\">\u003Ca href=\"#binare-bitoperationen\" class=\"anchor\">#\u003C\u002Fa> Binäre Bitoperationen\u003C\u002Fh3>\n\u003Cp>Bitoperationen erlauben die direkte Manipulation einzelner Bits innerhalb von Ganzzahlwerten.\u003C\u002Fp>\n\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Operator\u003C\u002Fth>\u003Cth>Beschreibung\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\n\u003Ctr>\u003Ctd>\u003Ccode>&amp;\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Bitweises UND\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>|\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Bitweises ODER\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>xor\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Bitweises XOR\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>shl\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Nach links verschieben\u003C\u002Ftd>\u003C\u002Ftr>\n\u003Ctr>\u003Ctd>\u003Ccode>shr\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>Nach rechts verschieben\u003C\u002Ftd>\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Cp>\u003Cstrong>Beispiel - bitweises UND zum Maskieren:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cdiv class=\"code-block\" data-lang=\"volang\">\n\u003Cpre>\u003Ccode class=\"language-volang\">\u003Cspan class=\"variable\">sensor_value\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0xA7\u003C\u002Fspan>    \u003Cspan class=\"comment\">\u002F\u002F Binär: 1010 0111\u003C\u002Fspan>\n\u003Cspan class=\"variable\">mask\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"number\">0x0F\u003C\u002Fspan>            \u003Cspan class=\"comment\">\u002F\u002F Binär: 0000 1111\u003C\u002Fspan>\n\n\u003Cspan class=\"comment\">\u002F\u002F Nur die unteren 4 Bits extrahieren\u003C\u002Fspan>\n\u003Cspan class=\"variable\">lower_nibble\u003C\u002Fspan> \u003Cspan class=\"operator\">=\u003C\u002Fspan> \u003Cspan class=\"variable\">sensor_value\u003C\u002Fspan> \u003Cspan class=\"operator\">&amp;\u003C\u002Fspan> \u003Cspan class=\"variable\">mask\u003C\u002Fspan>\n\u003Cspan class=\"comment\">\u002F\u002F Ergebnis: 0x07 (Binär: 0000 0111)\u003C\u002Fspan>\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003C\u002Fdiv>",[1352,1354,1357,1360,1363,1366,1369,1372,1375,1378,1381,1384,1387,1390,1393,1396,1399,1402,1405,1408,1411,1414,1417,1420,1423,1426,1429,1432,1435,1438,1441,1444,1447,1450,1453,1456,1459,1462,1465,1468,1471,1474],{"level":84,"text":637,"id":1353},"die-sprache-volang",{"level":90,"text":1355,"id":1356},"Einführung","einfuhrung",{"level":96,"text":1358,"id":1359},"Architektur: das kompilierte Modell","architektur-das-kompilierte-modell",{"level":96,"text":1361,"id":1362},"Warum Volang VM?","warum-volang-vm",{"level":90,"text":1364,"id":1365},"Lexikalische Konventionen","lexikalische-konventionen",{"level":96,"text":1367,"id":1368},"Schlüsselwörter","schlusselworter",{"level":96,"text":1370,"id":1371},"Literale","literale",{"level":106,"text":1373,"id":1374},"Boolesche Literale","boolesche-literale",{"level":106,"text":1376,"id":1377},"Ganzzahl-Literale","ganzzahl-literale",{"level":106,"text":1379,"id":1380},"Gleitkomma-Literale","gleitkomma-literale",{"level":106,"text":1382,"id":1383},"Text-Literale (Strings)","text-literale-strings",{"level":106,"text":1385,"id":1386},"Rohe Strings","rohe-strings",{"level":90,"text":1388,"id":1389},"Werte und Typen","werte-und-typen",{"level":96,"text":1391,"id":1392},"Erstklassige Werte","erstklassige-werte",{"level":96,"text":1394,"id":1395},"Typkonsistenz (strikte Typisierung)","typkonsistenz-strikte-typisierung",{"level":96,"text":1397,"id":1398},"Wertkategorien","wertkategorien",{"level":106,"text":1400,"id":1401},"1. Numerisch (Ganzzahl und Float)","1-numerisch-ganzzahl-und-float",{"level":106,"text":1403,"id":1404},"2. Textuell (String)","2-textuell-string",{"level":106,"text":1406,"id":1407},"3. Logisch (Boolean)","3-logisch-boolean",{"level":106,"text":1409,"id":1410},"4. Undurchsichtig (Opaque)","4-undurchsichtig-opaque",{"level":90,"text":1412,"id":1413},"Variablen","variablen",{"level":96,"text":1415,"id":1416},"Variablen erstellen","variablen-erstellen",{"level":96,"text":1418,"id":1419},"Gültigkeitsbereich von Variablen","gultigkeitsbereich-von-variablen",{"level":106,"text":1421,"id":1422},"Globale Variablen","globale-variablen",{"level":106,"text":1424,"id":1425},"Lokale Variablen","lokale-variablen",{"level":90,"text":1427,"id":1428},"Kommentare","kommentare",{"level":96,"text":1430,"id":1431},"Einzeilige Kommentare","einzeilige-kommentare",{"level":96,"text":1433,"id":1434},"Mehrzeilige Kommentare","mehrzeilige-kommentare",{"level":90,"text":1436,"id":1437},"Anweisungen","anweisungen",{"level":96,"text":1439,"id":1440},"Zuweisungen","zuweisungen",{"level":106,"text":1442,"id":1443},"Einfache Zuweisung","einfache-zuweisung",{"level":106,"text":1445,"id":1446},"Zusammengesetzte Zuweisungsoperatoren","zusammengesetzte-zuweisungsoperatoren",{"level":96,"text":1448,"id":1449},"Ablaufsteuerung","ablaufsteuerung",{"level":106,"text":1451,"id":1452},"Einfaches if","einfaches-if",{"level":106,"text":1454,"id":1455},"if mit else","if-mit-else",{"level":106,"text":1457,"id":1458},"Verkettete Bedingungen (else if)","verkettete-bedingungen-else-if",{"level":96,"text":1460,"id":1461},"Schleifen","schleifen",{"level":96,"text":1463,"id":1464},"Funktionen","funktionen",{"level":90,"text":1466,"id":1467},"Ausdrücke","ausdrucke",{"level":96,"text":1469,"id":1470},"Binäre arithmetische Operatoren","binare-arithmetische-operatoren",{"level":96,"text":1472,"id":1473},"Binäre logische Operatoren","binare-logische-operatoren",{"level":96,"text":1475,"id":1476},"Binäre Bitoperationen","binare-bitoperationen",{},1783173854856]